Skip to content

Commit cc35a55

Browse files
committed
fix(datastore): restore fallback to GlobalOpenTelemetry in DatastoreOpenTelemetryOptions
1 parent 66ded32 commit cc35a55

5 files changed

Lines changed: 21 additions & 59 deletions

File tree

java-datastore/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOpenTelemetryOptions.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@
1717
package com.google.cloud.datastore;
1818

1919
import com.google.api.core.BetaApi;
20+
import com.google.common.base.Preconditions;
21+
import io.opentelemetry.api.GlobalOpenTelemetry;
2022
import io.opentelemetry.api.OpenTelemetry;
2123
import javax.annotation.Nonnull;
22-
import javax.annotation.Nullable;
2324

2425
/**
2526
* Represents the options that are used to configure the use of OpenTelemetry for telemetry
@@ -29,7 +30,7 @@ public class DatastoreOpenTelemetryOptions {
2930
private final boolean tracingEnabled;
3031
private final boolean metricsEnabled;
3132
private final boolean exportBuiltinMetricsToGoogleCloudMonitoring;
32-
private final @Nullable OpenTelemetry openTelemetry;
33+
private final OpenTelemetry openTelemetry;
3334

3435
DatastoreOpenTelemetryOptions(Builder builder) {
3536
this.tracingEnabled = builder.tracingEnabled;
@@ -92,7 +93,7 @@ public boolean isExportBuiltinMetricsToGoogleCloudMonitoring() {
9293
*
9394
* @return the custom {@link OpenTelemetry} instance, or {@code null} if none was provided.
9495
*/
95-
@Nullable
96+
@Nonnull
9697
public OpenTelemetry getOpenTelemetry() {
9798
return openTelemetry;
9899
}
@@ -123,7 +124,7 @@ public static class Builder {
123124
private boolean metricsEnabled;
124125
private boolean exportBuiltinMetricsToGoogleCloudMonitoring;
125126

126-
@Nullable private OpenTelemetry openTelemetry;
127+
private OpenTelemetry openTelemetry;
127128

128129
private Builder() {
129130
tracingEnabled = false;
@@ -159,8 +160,8 @@ public DatastoreOpenTelemetryOptions.Builder setTracingEnabled(boolean enabled)
159160
* @param enabled Whether metrics should be enabled.
160161
* @return this builder instance.
161162
*/
162-
@Nonnull
163-
DatastoreOpenTelemetryOptions.Builder setMetricsEnabled(boolean enabled) {
163+
@BetaApi
164+
public DatastoreOpenTelemetryOptions.Builder setMetricsEnabled(boolean enabled) {
164165
this.metricsEnabled = enabled;
165166
return this;
166167
}
@@ -191,8 +192,8 @@ public DatastoreOpenTelemetryOptions.Builder setExportBuiltinMetricsToGoogleClou
191192
* @return this builder instance.
192193
*/
193194
@Nonnull
194-
public DatastoreOpenTelemetryOptions.Builder setOpenTelemetry(
195-
@Nonnull OpenTelemetry openTelemetry) {
195+
public DatastoreOpenTelemetryOptions.Builder setOpenTelemetry(OpenTelemetry openTelemetry) {
196+
Preconditions.checkNotNull(openTelemetry, "Custom Otel Instance cannot be null");
196197
this.openTelemetry = openTelemetry;
197198
return this;
198199
}
@@ -204,6 +205,8 @@ public DatastoreOpenTelemetryOptions.Builder setOpenTelemetry(
204205
*/
205206
@Nonnull
206207
public DatastoreOpenTelemetryOptions build() {
208+
// If no custom Otel was provided, fall back to using GlobalOpenTelemetry.
209+
this.openTelemetry = openTelemetry == null ? GlobalOpenTelemetry.get() : openTelemetry;
207210
return new DatastoreOpenTelemetryOptions(this);
208211
}
209212
}

java-datastore/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/DatastoreMetricsRecorder.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,6 @@ static DatastoreMetricsRecorder getInstance(
122122
// Note: Metrics will not be sent if an emulator is enabled.
123123
if (otelOptions.isMetricsEnabled()) {
124124
OpenTelemetry customOtel = otelOptions.getOpenTelemetry();
125-
if (customOtel == null) {
126-
customOtel = GlobalOpenTelemetry.get();
127-
}
128125
recorders.add(
129126
new OpenTelemetryDatastoreMetricsRecorder(customOtel, TelemetryConstants.METRIC_PREFIX));
130127
}

java-datastore/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/EnabledTraceUtil.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import com.google.cloud.datastore.telemetry.TraceUtil.Span;
2828
import com.google.common.base.Throwables;
2929
import io.grpc.ManagedChannelBuilder;
30-
import io.opentelemetry.api.GlobalOpenTelemetry;
3130
import io.opentelemetry.api.OpenTelemetry;
3231
import io.opentelemetry.api.common.Attributes;
3332
import io.opentelemetry.api.common.AttributesBuilder;
@@ -51,16 +50,8 @@ public class EnabledTraceUtil implements TraceUtil {
5150
private final DatastoreOptions datastoreOptions;
5251

5352
EnabledTraceUtil(DatastoreOptions datastoreOptions) {
54-
OpenTelemetry openTelemetry = datastoreOptions.getOpenTelemetryOptions().getOpenTelemetry();
55-
56-
// If tracing is enabled, but an OpenTelemetry instance is not provided, fall back
57-
// to using GlobalOpenTelemetry.
58-
if (openTelemetry == null) {
59-
openTelemetry = GlobalOpenTelemetry.get();
60-
}
61-
6253
this.datastoreOptions = datastoreOptions;
63-
this.openTelemetry = openTelemetry;
54+
this.openTelemetry = datastoreOptions.getOpenTelemetryOptions().getOpenTelemetry();
6455
this.tracer = openTelemetry.getTracer(LIBRARY_NAME);
6556
}
6657

java-datastore/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOpenTelemetryOptionsTestHelper.java

Lines changed: 0 additions & 34 deletions
This file was deleted.

java-datastore/google-cloud-datastore/src/test/java/com/google/cloud/datastore/ITDatastoreBuiltInAndCustomMetrics.java renamed to java-datastore/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreClientSideMetrics.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,18 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.google.cloud.datastore;
17+
package com.google.cloud.datastore.it;
1818

1919
import static com.google.common.truth.Truth.assertThat;
2020
import static com.google.common.truth.Truth.assertWithMessage;
2121
import static org.junit.Assume.assumeNotNull;
2222

2323
import com.google.cloud.TransportOptions;
24+
import com.google.cloud.datastore.Datastore;
25+
import com.google.cloud.datastore.DatastoreOpenTelemetryOptions;
26+
import com.google.cloud.datastore.DatastoreOptions;
27+
import com.google.cloud.datastore.Entity;
28+
import com.google.cloud.datastore.Key;
2429
import com.google.cloud.datastore.telemetry.TelemetryConstants;
2530
import com.google.cloud.grpc.GrpcTransportOptions;
2631
import com.google.cloud.http.HttpTransportOptions;
@@ -59,16 +64,15 @@
5964
*/
6065
@RunWith(Parameterized.class)
6166
@SuppressWarnings("checkstyle:abbreviationaswordinname")
62-
public class ITDatastoreBuiltInAndCustomMetrics {
67+
public class ITDatastoreClientSideMetrics {
6368

6469
private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT");
6570
private static final String DATABASE_ID =
6671
System.getenv().getOrDefault("DATASTORE_DATABASE_ID", "");
67-
private boolean isDatastoreClosed = false;
6872

6973
private final TransportOptions transportOptions;
7074

71-
public ITDatastoreBuiltInAndCustomMetrics(TransportOptions transportOptions) {
75+
public ITDatastoreClientSideMetrics(TransportOptions transportOptions) {
7276
this.transportOptions = transportOptions;
7377
}
7478

@@ -134,6 +138,7 @@ public void setUp() {
134138

135139
@After
136140
public void tearDown() throws Exception {
141+
boolean isDatastoreClosed = false;
137142
if (datastore != null && !isDatastoreClosed) {
138143
Key key = datastore.newKeyFactory().setKind(kind).newKey("metrics-it-entity");
139144
try {

0 commit comments

Comments
 (0)