Skip to content

Commit 695649d

Browse files
committed
formatted
1 parent fe373da commit 695649d

5 files changed

Lines changed: 253 additions & 275 deletions

File tree

java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public class HttpBigQueryRpc implements BigQueryRpc {
8787
public static final String DEFAULT_PROJECTION = "full";
8888
private static final String BASE_RESUMABLE_URI = "upload/bigquery/v2/projects/";
8989
static final String HTTP_TRACING_DEV_GATE_PROPERTY =
90-
"com.google.cloud.bigquery.http.tracing.dev.enabled";
90+
"com.google.cloud.bigquery.http.tracing.dev.enabled";
9191
// see:
9292
// https://cloud.google.com/bigquery/loading-data-post-request#resume-upload
9393
private static final int HTTP_RESUME_INCOMPLETE = 308;
@@ -116,18 +116,17 @@ public HttpBigQueryRpc(BigQueryOptions options) {
116116
this.options = options;
117117

118118
if (options.isOpenTelemetryTracingEnabled()
119-
&& options.getOpenTelemetryTracer() != null
120-
&& isHttpTracingEnabled()) {
119+
&& options.getOpenTelemetryTracer() != null
120+
&& isHttpTracingEnabled()) {
121121
initializer =
122-
new HttpTracingRequestInitializer(
123-
initializer, options.getOpenTelemetryTracer());
122+
new HttpTracingRequestInitializer(initializer, options.getOpenTelemetryTracer());
124123
}
125124

126125
bigquery =
127-
new Bigquery.Builder(transport, new GsonFactory(), initializer)
128-
.setRootUrl(options.getResolvedApiaryHost("bigquery"))
129-
.setApplicationName(options.getApplicationName())
130-
.build();
126+
new Bigquery.Builder(transport, new GsonFactory(), initializer)
127+
.setRootUrl(options.getResolvedApiaryHost("bigquery"))
128+
.setApplicationName(options.getApplicationName())
129+
.build();
131130
}
132131

133132
private static BigQueryException translate(IOException exception) {
@@ -1794,7 +1793,6 @@ private static Attributes otelAttributesFromOptions(Map<Option, ?> options) {
17941793
must be explicitly enabled with the system property
17951794
*/
17961795
static boolean isHttpTracingEnabled() {
1797-
return
1798-
Boolean.parseBoolean(System.getProperty(HTTP_TRACING_DEV_GATE_PROPERTY));
1796+
return Boolean.parseBoolean(System.getProperty(HTTP_TRACING_DEV_GATE_PROPERTY));
17991797
}
18001798
}

java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/telemetry/BigQueryTelemetryTracer.java

Lines changed: 37 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@
2020
import com.google.api.core.InternalApi;
2121
import io.opentelemetry.api.common.AttributeKey;
2222
import io.opentelemetry.api.trace.Span;
23-
import io.opentelemetry.api.trace.SpanBuilder;
24-
import io.opentelemetry.api.trace.SpanKind;
25-
import io.opentelemetry.api.trace.Tracer;
2623

2724
/**
2825
* General BigQuery Telemetry class that stores generic telemetry attributes and any associated
@@ -32,47 +29,46 @@
3229
@InternalApi
3330
public final class BigQueryTelemetryTracer {
3431

35-
private BigQueryTelemetryTracer() {}
32+
private BigQueryTelemetryTracer() {}
3633

37-
public static final String BQ_GCP_CLIENT_SERVICE = "bigquery";
38-
public static final String BQ_GCP_CLIENT_REPO = "googleapis/java-bigquery";
39-
public static final String BQ_GCP_CLIENT_ARTIFACT = "google-cloud-bigquery";
40-
public static final String BQ_GCP_CLIENT_LANGUAGE = "java";
34+
public static final String BQ_GCP_CLIENT_SERVICE = "bigquery";
35+
public static final String BQ_GCP_CLIENT_REPO = "googleapis/java-bigquery";
36+
public static final String BQ_GCP_CLIENT_ARTIFACT = "google-cloud-bigquery";
37+
public static final String BQ_GCP_CLIENT_LANGUAGE = "java";
4138

42-
// Common GCP Attributes
43-
public static final AttributeKey<String> GCP_CLIENT_SERVICE =
44-
AttributeKey.stringKey("gcp.client.service");
45-
public static final AttributeKey<String> GCP_CLIENT_VERSION =
46-
AttributeKey.stringKey("gcp.client.version");
47-
public static final AttributeKey<String> GCP_CLIENT_REPO =
48-
AttributeKey.stringKey("gcp.client.repo");
49-
public static final AttributeKey<String> GCP_CLIENT_ARTIFACT =
50-
AttributeKey.stringKey("gcp.client.artifact");
51-
public static final AttributeKey<String> GCP_CLIENT_LANGUAGE =
52-
AttributeKey.stringKey("gcp.client.language");
53-
public static final AttributeKey<String> GCP_RESOURCE_ID =
54-
AttributeKey.stringKey("gcp.resource.destination.id");
55-
public static final AttributeKey<String> RPC_SYSTEM_NAME =
56-
AttributeKey.stringKey("rpc.system.name");
39+
// Common GCP Attributes
40+
public static final AttributeKey<String> GCP_CLIENT_SERVICE =
41+
AttributeKey.stringKey("gcp.client.service");
42+
public static final AttributeKey<String> GCP_CLIENT_VERSION =
43+
AttributeKey.stringKey("gcp.client.version");
44+
public static final AttributeKey<String> GCP_CLIENT_REPO =
45+
AttributeKey.stringKey("gcp.client.repo");
46+
public static final AttributeKey<String> GCP_CLIENT_ARTIFACT =
47+
AttributeKey.stringKey("gcp.client.artifact");
48+
public static final AttributeKey<String> GCP_CLIENT_LANGUAGE =
49+
AttributeKey.stringKey("gcp.client.language");
50+
public static final AttributeKey<String> GCP_RESOURCE_ID =
51+
AttributeKey.stringKey("gcp.resource.destination.id");
52+
public static final AttributeKey<String> RPC_SYSTEM_NAME =
53+
AttributeKey.stringKey("rpc.system.name");
5754

58-
// Common Error Attributes
59-
public static final AttributeKey<String> ERROR_TYPE = AttributeKey.stringKey("error.type");
60-
public static final AttributeKey<String> EXCEPTION_TYPE =
61-
AttributeKey.stringKey("exception.type");
62-
public static final AttributeKey<String> STATUS_MESSAGE =
63-
AttributeKey.stringKey("status.message");
55+
// Common Error Attributes
56+
public static final AttributeKey<String> ERROR_TYPE = AttributeKey.stringKey("error.type");
57+
public static final AttributeKey<String> EXCEPTION_TYPE =
58+
AttributeKey.stringKey("exception.type");
59+
public static final AttributeKey<String> STATUS_MESSAGE =
60+
AttributeKey.stringKey("status.message");
6461

65-
// Common Server Attributes
66-
public static final AttributeKey<String> SERVER_ADDRESS =
67-
AttributeKey.stringKey("server.address");
68-
public static final AttributeKey<Long> SERVER_PORT = AttributeKey.longKey("server.port");
62+
// Common Server Attributes
63+
public static final AttributeKey<String> SERVER_ADDRESS =
64+
AttributeKey.stringKey("server.address");
65+
public static final AttributeKey<Long> SERVER_PORT = AttributeKey.longKey("server.port");
6966

70-
public static void addCommonAttributeToSpan(Span span) {
71-
span
72-
.setAttribute(GCP_CLIENT_SERVICE, BQ_GCP_CLIENT_SERVICE)
73-
.setAttribute(GCP_CLIENT_REPO, BQ_GCP_CLIENT_REPO)
74-
.setAttribute(GCP_CLIENT_ARTIFACT, BQ_GCP_CLIENT_ARTIFACT)
75-
.setAttribute(GCP_CLIENT_LANGUAGE, BQ_GCP_CLIENT_LANGUAGE);
76-
// TODO: add version
77-
}
67+
public static void addCommonAttributeToSpan(Span span) {
68+
span.setAttribute(GCP_CLIENT_SERVICE, BQ_GCP_CLIENT_SERVICE)
69+
.setAttribute(GCP_CLIENT_REPO, BQ_GCP_CLIENT_REPO)
70+
.setAttribute(GCP_CLIENT_ARTIFACT, BQ_GCP_CLIENT_ARTIFACT)
71+
.setAttribute(GCP_CLIENT_LANGUAGE, BQ_GCP_CLIENT_LANGUAGE);
72+
// TODO: add version
73+
}
7874
}

java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/telemetry/HttpTracingRequestInitializer.java

Lines changed: 48 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,8 @@
2222
import com.google.common.annotations.VisibleForTesting;
2323
import io.opentelemetry.api.common.AttributeKey;
2424
import io.opentelemetry.api.trace.Span;
25-
import io.opentelemetry.api.trace.StatusCode;
2625
import io.opentelemetry.api.trace.Tracer;
27-
28-
import java.io.BufferedInputStream;
29-
import java.io.BufferedReader;
3026
import java.io.IOException;
31-
import java.io.InputStream;
32-
import java.io.InputStreamReader;
33-
import java.net.URI;
34-
import java.net.URISyntaxException;
35-
import java.nio.charset.StandardCharsets;
36-
import java.util.Arrays;
37-
import java.util.Collections;
38-
import java.util.HashSet;
39-
import java.util.Set;
40-
import java.util.concurrent.atomic.AtomicBoolean;
41-
import java.util.concurrent.atomic.AtomicLong;
42-
import java.util.stream.Collectors;
4327

4428
/**
4529
* HttpRequestInitializer that wraps a delegate initializer, intercepts all HTTP requests, adds
@@ -49,66 +33,63 @@
4933
@InternalApi
5034
public class HttpTracingRequestInitializer implements HttpRequestInitializer {
5135

52-
// HTTP Specific Telemetry Attributes
53-
public static final AttributeKey<String> HTTP_REQUEST_METHOD =
54-
AttributeKey.stringKey("http.request.method");
55-
public static final AttributeKey<String> URL_FULL = AttributeKey.stringKey("url.full");
56-
public static final AttributeKey<String> URL_TEMPLATE = AttributeKey.stringKey("url.template");
57-
public static final AttributeKey<String> URL_DOMAIN = AttributeKey.stringKey("url.domain");
58-
public static final AttributeKey<Long> HTTP_RESPONSE_STATUS_CODE =
59-
AttributeKey.longKey("http.response.status_code");
60-
public static final AttributeKey<Long> HTTP_REQUEST_RESEND_COUNT =
61-
AttributeKey.longKey("http.request.resend_count");
62-
public static final AttributeKey<Long> HTTP_REQUEST_BODY_SIZE =
63-
AttributeKey.longKey("http.request.body.size");
64-
public static final AttributeKey<Long> HTTP_RESPONSE_BODY_SIZE =
65-
AttributeKey.longKey("http.response.body.size");
36+
// HTTP Specific Telemetry Attributes
37+
public static final AttributeKey<String> HTTP_REQUEST_METHOD =
38+
AttributeKey.stringKey("http.request.method");
39+
public static final AttributeKey<String> URL_FULL = AttributeKey.stringKey("url.full");
40+
public static final AttributeKey<String> URL_TEMPLATE = AttributeKey.stringKey("url.template");
41+
public static final AttributeKey<String> URL_DOMAIN = AttributeKey.stringKey("url.domain");
42+
public static final AttributeKey<Long> HTTP_RESPONSE_STATUS_CODE =
43+
AttributeKey.longKey("http.response.status_code");
44+
public static final AttributeKey<Long> HTTP_REQUEST_RESEND_COUNT =
45+
AttributeKey.longKey("http.request.resend_count");
46+
public static final AttributeKey<Long> HTTP_REQUEST_BODY_SIZE =
47+
AttributeKey.longKey("http.request.body.size");
48+
public static final AttributeKey<Long> HTTP_RESPONSE_BODY_SIZE =
49+
AttributeKey.longKey("http.response.body.size");
6650

67-
@VisibleForTesting static final String HTTP_RPC_SYSTEM_NAME = "http";
51+
@VisibleForTesting static final String HTTP_RPC_SYSTEM_NAME = "http";
6852

53+
private final HttpRequestInitializer delegate;
54+
private final Tracer tracer;
6955

70-
private final HttpRequestInitializer delegate;
71-
private final Tracer tracer;
56+
public HttpTracingRequestInitializer(HttpRequestInitializer delegate, Tracer tracer) {
57+
this.delegate = delegate;
58+
this.tracer = tracer;
59+
}
7260

73-
public HttpTracingRequestInitializer(
74-
HttpRequestInitializer delegate, Tracer tracer) {
75-
this.delegate = delegate;
76-
this.tracer = tracer;
61+
@Override
62+
public void initialize(HttpRequest request) throws IOException {
63+
if (delegate != null) {
64+
delegate.initialize(request);
7765
}
7866

79-
@Override
80-
public void initialize(HttpRequest request) throws IOException {
81-
if (delegate != null) {
82-
delegate.initialize(request);
83-
}
84-
85-
if (tracer == null) {
86-
return;
87-
}
67+
if (tracer == null) {
68+
return;
69+
}
8870

89-
// Get the current active span (created by HttpBigQueryRpc) and add HTTP attributes to it
90-
Span span = Span.current();
91-
if (!span.getSpanContext().isValid()) {
92-
// No active span to exists, skip instrumentation
93-
return;
94-
}
71+
// Get the current active span (created by HttpBigQueryRpc) and add HTTP attributes to it
72+
Span span = Span.current();
73+
if (!span.getSpanContext().isValid()) {
74+
// No active span to exists, skip instrumentation
75+
return;
76+
}
9577

96-
String host = request.getUrl().getHost();
97-
Integer port = request.getUrl().getPort();
78+
String host = request.getUrl().getHost();
79+
Integer port = request.getUrl().getPort();
9880

99-
// Add initial HTTP attributes to the existing span
100-
addInitialHttpAttributesToSpan(span, host, port);
101-
}
81+
// Add initial HTTP attributes to the existing span
82+
addInitialHttpAttributesToSpan(span, host, port);
83+
}
10284

103-
/** Add initial HTTP attributes to the existing active span */
104-
private void addInitialHttpAttributesToSpan(
105-
Span span, String host, Integer port) {
106-
BigQueryTelemetryTracer.addCommonAttributeToSpan(span);
107-
span.setAttribute(BigQueryTelemetryTracer.RPC_SYSTEM_NAME, HTTP_RPC_SYSTEM_NAME);
108-
span.setAttribute(BigQueryTelemetryTracer.SERVER_ADDRESS, host);
109-
if (port != null && port > 0) {
110-
span.setAttribute(BigQueryTelemetryTracer.SERVER_PORT, port.longValue());
111-
}
112-
// TODO add full sanitized url, url domain, request method
85+
/** Add initial HTTP attributes to the existing active span */
86+
private void addInitialHttpAttributesToSpan(Span span, String host, Integer port) {
87+
BigQueryTelemetryTracer.addCommonAttributeToSpan(span);
88+
span.setAttribute(BigQueryTelemetryTracer.RPC_SYSTEM_NAME, HTTP_RPC_SYSTEM_NAME);
89+
span.setAttribute(BigQueryTelemetryTracer.SERVER_ADDRESS, host);
90+
if (port != null && port > 0) {
91+
span.setAttribute(BigQueryTelemetryTracer.SERVER_PORT, port.longValue());
11392
}
93+
// TODO add full sanitized url, url domain, request method
94+
}
11495
}

java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpcTest.java

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -909,7 +909,8 @@ public void testOtelAttributesFromOptionsGetAddedtoSpan() throws Exception {
909909

910910
@Test
911911
public void testHttpTracingEnabled() throws Exception {
912-
String originalProperty = System.getProperty("com.google.cloud.bigquery.http.tracing.dev.enabled");
912+
String originalProperty =
913+
System.getProperty("com.google.cloud.bigquery.http.tracing.dev.enabled");
913914
try {
914915
System.setProperty("com.google.cloud.bigquery.http.tracing.dev.enabled", "true");
915916
HttpBigQueryRpc customRpc = createRpc(true);
@@ -936,16 +937,21 @@ public void testHttpTracingEnabled() throws Exception {
936937

937938
List<SpanData> spans = spanExporter.getFinishedSpanItems();
938939
assertThat(spans).isNotEmpty();
939-
SpanData rpcSpan = spans.stream()
940-
.filter(span -> span.getName().equals("com.google.cloud.bigquery.BigQueryRpc.getDataset"))
940+
SpanData rpcSpan =
941+
spans.stream()
942+
.filter(
943+
span ->
944+
span.getName().equals("com.google.cloud.bigquery.BigQueryRpc.getDataset"))
941945
.findFirst()
942946
.orElse(null);
943947
assertNotNull(rpcSpan);
944-
assertEquals("http", rpcSpan.getAttributes().get(AttributeKey.stringKey("rpc.system.name")));
948+
assertEquals(
949+
"http", rpcSpan.getAttributes().get(AttributeKey.stringKey("rpc.system.name")));
945950
assertNotNull(rpcSpan.getAttributes().get(AttributeKey.stringKey("server.address")));
946951
} finally {
947952
if (originalProperty != null) {
948-
System.setProperty("com.google.cloud.bigquery.http.tracing.dev.enabled", originalProperty);
953+
System.setProperty(
954+
"com.google.cloud.bigquery.http.tracing.dev.enabled", originalProperty);
949955
} else {
950956
System.clearProperty("com.google.cloud.bigquery.http.tracing.dev.enabled");
951957
}
@@ -954,7 +960,8 @@ public void testHttpTracingEnabled() throws Exception {
954960

955961
@Test
956962
public void testHttpTracingDisabled() throws Exception {
957-
String originalProperty = System.getProperty("com.google.cloud.bigquery.http.tracing.dev.enabled");
963+
String originalProperty =
964+
System.getProperty("com.google.cloud.bigquery.http.tracing.dev.enabled");
958965
try {
959966
System.setProperty("com.google.cloud.bigquery.http.tracing.dev.enabled", "false");
960967
HttpBigQueryRpc customRpc = createRpc(true);
@@ -981,16 +988,20 @@ public void testHttpTracingDisabled() throws Exception {
981988

982989
List<SpanData> spans = spanExporter.getFinishedSpanItems();
983990
assertThat(spans).isNotEmpty();
984-
SpanData rpcSpan = spans.stream()
985-
.filter(span -> span.getName().equals("com.google.cloud.bigquery.BigQueryRpc.getDataset"))
991+
SpanData rpcSpan =
992+
spans.stream()
993+
.filter(
994+
span ->
995+
span.getName().equals("com.google.cloud.bigquery.BigQueryRpc.getDataset"))
986996
.findFirst()
987997
.orElse(null);
988998
assertNotNull(rpcSpan);
989999
assertThat(rpcSpan.getAttributes().get(AttributeKey.stringKey("rpc.system.name"))).isNull();
9901000
assertThat(rpcSpan.getAttributes().get(AttributeKey.stringKey("server.address"))).isNull();
9911001
} finally {
9921002
if (originalProperty != null) {
993-
System.setProperty("com.google.cloud.bigquery.http.tracing.dev.enabled", originalProperty);
1003+
System.setProperty(
1004+
"com.google.cloud.bigquery.http.tracing.dev.enabled", originalProperty);
9941005
} else {
9951006
System.clearProperty("com.google.cloud.bigquery.http.tracing.dev.enabled");
9961007
}

0 commit comments

Comments
 (0)