From 101c3dddf6a29db5f3563087ca814f59ad2dac3b Mon Sep 17 00:00:00 2001 From: Mattie Fu Date: Fri, 29 Mar 2024 15:04:06 -0400 Subject: [PATCH] record metrics whenever it's registered --- .../data/v2/stub/EnhancedBigtableStubSettings.java | 5 ++--- .../data/v2/stub/metrics/BuiltinMetricsView.java | 10 ++++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java index 5e8bf0bdae..f2cedb1cae 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java @@ -44,9 +44,9 @@ import com.google.cloud.bigtable.data.v2.models.ReadModifyWriteRow; import com.google.cloud.bigtable.data.v2.models.Row; import com.google.cloud.bigtable.data.v2.models.RowMutation; +import com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsView; import com.google.cloud.bigtable.data.v2.stub.metrics.DefaultMetricsProvider; import com.google.cloud.bigtable.data.v2.stub.metrics.MetricsProvider; -import com.google.cloud.bigtable.data.v2.stub.metrics.NoopMetricsProvider; import com.google.cloud.bigtable.data.v2.stub.mutaterows.MutateRowsBatchingDescriptor; import com.google.cloud.bigtable.data.v2.stub.readrows.ReadRowsBatchingDescriptor; import com.google.common.base.MoreObjects; @@ -1068,8 +1068,7 @@ public EnhancedBigtableStubSettings build() { featureFlags.setRoutingCookie(this.getEnableRoutingCookie()); featureFlags.setRetryInfo(this.getEnableRetryInfo()); - featureFlags.setClientSideMetricsEnabled( - !(this.getMetricsProvider() instanceof NoopMetricsProvider)); + featureFlags.setClientSideMetricsEnabled((BuiltinMetricsView.getBuiltinViewRegistered())); // Serialize the web64 encode the bigtable feature flags ByteArrayOutputStream boas = new ByteArrayOutputStream(); diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BuiltinMetricsView.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BuiltinMetricsView.java index 445160a146..7277d6bb6d 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BuiltinMetricsView.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BuiltinMetricsView.java @@ -15,6 +15,7 @@ */ package com.google.cloud.bigtable.data.v2.stub.metrics; +import com.google.api.core.InternalApi; import com.google.auth.Credentials; import com.google.auth.oauth2.GoogleCredentials; import io.opentelemetry.sdk.metrics.InstrumentSelector; @@ -24,6 +25,7 @@ import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader; import java.io.IOException; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; import javax.annotation.Nullable; /** @@ -33,6 +35,8 @@ */ public class BuiltinMetricsView { + private static final AtomicBoolean BUILTIN_VIEW_REGISTERED = new AtomicBoolean(); + private BuiltinMetricsView() {} /** @@ -50,10 +54,16 @@ public static void registerBuiltinMetrics( String projectId, @Nullable Credentials credentials, SdkMeterProviderBuilder builder) throws IOException { MetricExporter metricExporter = BigtableCloudMonitoringExporter.create(projectId, credentials); + BUILTIN_VIEW_REGISTERED.set(true); for (Map.Entry entry : BuiltinMetricsConstants.getAllViews().entrySet()) { builder.registerView(entry.getKey(), entry.getValue()); } builder.registerMetricReader(PeriodicMetricReader.create(metricExporter)); } + + @InternalApi + public static boolean getBuiltinViewRegistered() { + return BUILTIN_VIEW_REGISTERED.get(); + } }