Skip to content

Commit 7b56606

Browse files
committed
refactor: remove exporter dep and logic
1 parent fc0174f commit 7b56606

File tree

6 files changed

+28
-134
lines changed

6 files changed

+28
-134
lines changed

java-bigquery/google-cloud-bigquery-jdbc/pom.xml

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -167,20 +167,6 @@
167167
<version>2.63.0-SNAPSHOT</version><!-- {x-version-update:google-cloud-bigquery:current} -->
168168
</parent>
169169

170-
<dependencyManagement>
171-
<dependencies>
172-
<dependency>
173-
<groupId>org.slf4j</groupId>
174-
<artifactId>slf4j-api</artifactId>
175-
<version>2.0.16</version>
176-
</dependency>
177-
<dependency>
178-
<groupId>com.google.re2j</groupId>
179-
<artifactId>re2j</artifactId>
180-
<version>1.8</version>
181-
</dependency>
182-
</dependencies>
183-
</dependencyManagement>
184170

185171
<dependencies>
186172
<dependency>
@@ -307,20 +293,6 @@
307293
<artifactId>opentelemetry-context</artifactId>
308294
</dependency>
309295

310-
<!-- OpenTelemetry SDK & Exporters (shaded) -->
311-
<dependency>
312-
<groupId>io.opentelemetry</groupId>
313-
<artifactId>opentelemetry-sdk</artifactId>
314-
</dependency>
315-
<dependency>
316-
<groupId>com.google.cloud.opentelemetry</groupId>
317-
<artifactId>exporter-trace</artifactId>
318-
<version>0.33.0</version>
319-
</dependency>
320-
<dependency>
321-
<groupId>io.opentelemetry</groupId>
322-
<artifactId>opentelemetry-sdk-trace</artifactId>
323-
</dependency>
324296

325297
<!-- Test Dependencies -->
326298
<dependency>

java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public class BigQueryConnection extends BigQueryNoOpsConnection {
141141
Long listenerPoolSize;
142142
String partnerToken;
143143
boolean enableOpenTelemetry;
144-
String openTelemetryExporter;
144+
OpenTelemetry customOpenTelemetry;
145145
Tracer tracer = OpenTelemetry.noop().getTracer("");
146146

147147
BigQueryConnection(String url) throws IOException {
@@ -248,7 +248,7 @@ public class BigQueryConnection extends BigQueryNoOpsConnection {
248248
this.listenerPoolSize = ds.getListenerPoolSize();
249249
this.partnerToken = ds.getPartnerToken();
250250
this.enableOpenTelemetry = ds.getEnableOpenTelemetry();
251-
this.openTelemetryExporter = ds.getOpenTelemetryExporter();
251+
this.customOpenTelemetry = ds.getCustomOpenTelemetry();
252252

253253
this.headerProvider = createHeaderProvider();
254254
this.bigQuery = getBigQueryConnection();
@@ -944,11 +944,10 @@ private BigQuery getBigQueryConnection() {
944944

945945
OpenTelemetry openTelemetry =
946946
BigQueryJdbcOpenTelemetry.getOpenTelemetry(
947-
this.enableOpenTelemetry, this.openTelemetryExporter);
947+
this.enableOpenTelemetry, this.customOpenTelemetry);
948948
if (this.enableOpenTelemetry) {
949949
this.tracer = BigQueryJdbcOpenTelemetry.getTracer(openTelemetry);
950950
bigQueryOptions.setOpenTelemetryTracer(this.tracer);
951-
BigQueryJdbcOpenTelemetry.attachLoggingBridge();
952951
}
953952

954953
BigQueryOptions options = bigQueryOptions.setHeaderProvider(this.headerProvider).build();

java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDriver.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.google.cloud.bigquery.exception.BigQueryJdbcRuntimeException;
2121
import io.grpc.LoadBalancerRegistry;
2222
import io.grpc.internal.PickFirstLoadBalancerProvider;
23+
import io.opentelemetry.api.OpenTelemetry;
2324
import java.io.IOException;
2425
import java.sql.Connection;
2526
import java.sql.Driver;
@@ -121,16 +122,22 @@ public Connection connect(String url, Properties info) throws SQLException {
121122
LOG.finest("++enter++");
122123
try {
123124
if (acceptsURL(url)) {
124-
// strip 'jdbc:' from the URL, add any extra properties
125+
Properties connectInfo = info == null ? new Properties() : (Properties) info.clone();
126+
OpenTelemetry customOpenTelemetry = null;
127+
if (connectInfo.containsKey("customOpenTelemetry")) {
128+
customOpenTelemetry = (OpenTelemetry) connectInfo.remove("customOpenTelemetry");
129+
}
125130
String connectionUri =
126-
BigQueryJdbcUrlUtility.appendPropertiesToURL(url.substring(5), this.toString(), info);
131+
BigQueryJdbcUrlUtility.appendPropertiesToURL(
132+
url.substring(5), this.toString(), connectInfo);
127133
try {
128134
BigQueryJdbcUrlUtility.parseUrl(connectionUri);
129135
} catch (BigQueryJdbcRuntimeException e) {
130136
throw new BigQueryJdbcException(e.getMessage(), e);
131137
}
132138

133139
DataSource ds = DataSource.fromUrl(connectionUri);
140+
ds.setCustomOpenTelemetry(customOpenTelemetry);
134141

135142
// LogLevel
136143
String logLevelStr = ds.getLogLevel();

java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcOpenTelemetry.java

Lines changed: 5 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -16,105 +16,33 @@
1616

1717
package com.google.cloud.bigquery.jdbc;
1818

19-
import com.google.cloud.opentelemetry.trace.TraceConfiguration;
20-
import com.google.cloud.opentelemetry.trace.TraceExporter;
2119
import io.opentelemetry.api.GlobalOpenTelemetry;
2220
import io.opentelemetry.api.OpenTelemetry;
2321
import io.opentelemetry.api.trace.Tracer;
24-
import io.opentelemetry.sdk.OpenTelemetrySdk;
25-
import io.opentelemetry.sdk.trace.SdkTracerProvider;
26-
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
27-
import io.opentelemetry.sdk.trace.export.SpanExporter;
28-
import java.io.IOException;
2922

3023
public class BigQueryJdbcOpenTelemetry {
3124

32-
private static final BigQueryJdbcCustomLogger LOG =
33-
new BigQueryJdbcCustomLogger(BigQueryJdbcOpenTelemetry.class.getName());
34-
private static final Object lock = new Object();
35-
private static volatile OpenTelemetrySdk autoConfiguredOpenTelemetry;
36-
private static volatile boolean initialized = false;
3725
private static final String INSTRUMENTATION_SCOPE_NAME = "com.google.cloud.bigquery.jdbc";
3826

3927
/**
4028
* Initializes or returns the OpenTelemetry instance based on hybrid logic. Prefer
4129
* GlobalOpenTelemetry; fallback to an auto-configured GCP exporter if requested.
4230
*/
43-
public static OpenTelemetry getOpenTelemetry(boolean enableOpenTelemetry, String exporterType) {
31+
public static OpenTelemetry getOpenTelemetry(
32+
boolean enableOpenTelemetry, OpenTelemetry customOpenTelemetry) {
4433
if (!enableOpenTelemetry) {
4534
return OpenTelemetry.noop();
4635
}
4736

48-
OpenTelemetry globalOtel = GlobalOpenTelemetry.get();
49-
if ("gcp".equalsIgnoreCase(exporterType)) {
50-
return getAutoConfiguredOpenTelemetry();
37+
if (customOpenTelemetry != null) {
38+
return customOpenTelemetry;
5139
}
5240

53-
return globalOtel;
41+
return GlobalOpenTelemetry.get();
5442
}
5543

5644
/** Gets a Tracer for the JDBC driver instrumentation scope. */
5745
public static Tracer getTracer(OpenTelemetry openTelemetry) {
5846
return openTelemetry.getTracer(INSTRUMENTATION_SCOPE_NAME);
5947
}
60-
61-
/**
62-
* TODO(b/491245568): Attaches the OpenTelemetry logging bridge to the root
63-
* java.util.logging.Logger. This is currently a no-op due to shading issues with
64-
* `opentelemetry-appender-jul`.
65-
*/
66-
public static void attachLoggingBridge() {
67-
// No-op for now.
68-
}
69-
70-
private static OpenTelemetry getAutoConfiguredOpenTelemetry() {
71-
if (!initialized) {
72-
synchronized (lock) {
73-
if (!initialized) {
74-
try {
75-
autoConfiguredOpenTelemetry = initGcpOpenTelemetry();
76-
} catch (Exception e) {
77-
LOG.warning("Failed to initialize OpenTelemetry with GCP exporter: " + e.getMessage());
78-
autoConfiguredOpenTelemetry = null;
79-
} finally {
80-
initialized = true;
81-
}
82-
}
83-
}
84-
}
85-
return autoConfiguredOpenTelemetry != null ? autoConfiguredOpenTelemetry : OpenTelemetry.noop();
86-
}
87-
88-
private static OpenTelemetrySdk initGcpOpenTelemetry() throws IOException {
89-
LOG.info("Initializing BigQuery JDBC standalone OpenTelemetry SDK with GCP exporter.");
90-
91-
SpanExporter traceExporter;
92-
try {
93-
TraceConfiguration configuration = TraceConfiguration.builder().build();
94-
traceExporter = TraceExporter.createWithConfiguration(configuration);
95-
} catch (Exception e) {
96-
throw new RuntimeException(
97-
"Could not create TraceExporter. Ensure exporter-trace is on classpath.", e);
98-
}
99-
100-
SdkTracerProvider tracerProvider =
101-
SdkTracerProvider.builder()
102-
.addSpanProcessor(BatchSpanProcessor.builder(traceExporter).build())
103-
.build();
104-
105-
OpenTelemetrySdk sdk = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build();
106-
107-
Runtime.getRuntime()
108-
.addShutdownHook(
109-
new Thread(
110-
() -> {
111-
try {
112-
tracerProvider.close();
113-
} catch (Exception e) {
114-
LOG.warning("Error closing tracer provider: " + e.getMessage());
115-
}
116-
}));
117-
118-
return sdk;
119-
}
12048
}

java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcUrlUtility.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,6 @@ protected boolean removeEldestEntry(Map.Entry<String, Map<String, String>> eldes
164164
static final int DEFAULT_SWA_ACTIVATION_ROW_COUNT_VALUE = 3;
165165
static final String ENABLE_OPENTELEMETRY_PROPERTY_NAME = "EnableOpenTelemetry";
166166
static final boolean DEFAULT_ENABLE_OPENTELEMETRY_VALUE = false;
167-
static final String OPENTELEMETRY_EXPORTER_PROPERTY_NAME = "OpenTelemetryExporter";
168-
static final String DEFAULT_OPENTELEMETRY_EXPORTER_VALUE = "none";
169167
private static final BigQueryJdbcCustomLogger LOG =
170168
new BigQueryJdbcCustomLogger(BigQueryJdbcUrlUtility.class.getName());
171169
static final String FILTER_TABLES_ON_DEFAULT_DATASET_PROPERTY_NAME =
@@ -617,12 +615,6 @@ protected boolean removeEldestEntry(Map.Entry<String, Map<String, String>> eldes
617615
.setDescription(
618616
"Enables or disables OpenTelemetry features in the Driver. Disabled by default.")
619617
.setDefaultValue(String.valueOf(DEFAULT_ENABLE_OPENTELEMETRY_VALUE))
620-
.build(),
621-
BigQueryConnectionProperty.newBuilder()
622-
.setName(OPENTELEMETRY_EXPORTER_PROPERTY_NAME)
623-
.setDescription(
624-
"Specifies the auto-configured OpenTelemetry exporter (e.g., gcp).")
625-
.setDefaultValue(DEFAULT_OPENTELEMETRY_EXPORTER_VALUE)
626618
.build())));
627619

628620
private static final List<String> NETWORK_PROPERTIES =

java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.google.common.base.Joiner;
2121
import com.google.common.collect.ImmutableMap;
2222
import com.google.common.collect.ImmutableSet;
23+
import io.opentelemetry.api.OpenTelemetry;
2324
import java.io.PrintWriter;
2425
import java.sql.Connection;
2526
import java.sql.DriverManager;
@@ -114,7 +115,7 @@ public class DataSource implements javax.sql.DataSource {
114115
private Long connectionPoolSize;
115116
private Long listenerPoolSize;
116117
private Boolean enableOpenTelemetry;
117-
private String openTelemetryExporter;
118+
private OpenTelemetry customOpenTelemetry;
118119

119120
// Make sure the JDBC driver class is loaded.
120121
static {
@@ -332,9 +333,6 @@ public class DataSource implements javax.sql.DataSource {
332333
ds.setEnableOpenTelemetry(
333334
BigQueryJdbcUrlUtility.convertIntToBoolean(
334335
val, BigQueryJdbcUrlUtility.ENABLE_OPENTELEMETRY_PROPERTY_NAME)))
335-
.put(
336-
BigQueryJdbcUrlUtility.OPENTELEMETRY_EXPORTER_PROPERTY_NAME,
337-
DataSource::setOpenTelemetryExporter)
338336
.build();
339337

340338
public static DataSource fromUrl(String url) {
@@ -386,7 +384,11 @@ public Connection getConnection() throws SQLException {
386384
throw new BigQueryJdbcException(
387385
"The URL " + getURL() + " is invalid. Please specify a valid Connection URL. ");
388386
}
389-
return DriverManager.getConnection(getURL(), createProperties());
387+
Properties props = createProperties();
388+
if (this.customOpenTelemetry != null) {
389+
props.put("customOpenTelemetry", this.customOpenTelemetry);
390+
}
391+
return DriverManager.getConnection(getURL(), props);
390392
}
391393

392394
private Properties createProperties() {
@@ -632,10 +634,6 @@ private Properties createProperties() {
632634
BigQueryJdbcUrlUtility.ENABLE_OPENTELEMETRY_PROPERTY_NAME,
633635
String.valueOf(this.enableOpenTelemetry));
634636
}
635-
if (this.openTelemetryExporter != null) {
636-
connectionProperties.setProperty(
637-
BigQueryJdbcUrlUtility.OPENTELEMETRY_EXPORTER_PROPERTY_NAME, this.openTelemetryExporter);
638-
}
639637
return connectionProperties;
640638
}
641639

@@ -767,14 +765,12 @@ public void setEnableOpenTelemetry(Boolean enableOpenTelemetry) {
767765
this.enableOpenTelemetry = enableOpenTelemetry;
768766
}
769767

770-
public String getOpenTelemetryExporter() {
771-
return openTelemetryExporter != null
772-
? openTelemetryExporter
773-
: BigQueryJdbcUrlUtility.DEFAULT_OPENTELEMETRY_EXPORTER_VALUE;
768+
public OpenTelemetry getCustomOpenTelemetry() {
769+
return customOpenTelemetry;
774770
}
775771

776-
public void setOpenTelemetryExporter(String openTelemetryExporter) {
777-
this.openTelemetryExporter = openTelemetryExporter;
772+
public void setCustomOpenTelemetry(OpenTelemetry customOpenTelemetry) {
773+
this.customOpenTelemetry = customOpenTelemetry;
778774
}
779775

780776
public void setHighThroughputMinTableSize(Integer highThroughputMinTableSize) {

0 commit comments

Comments
 (0)