diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/csm/MetricsImpl.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/csm/MetricsImpl.java index f0efac7e96..0daa04eef9 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/csm/MetricsImpl.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/csm/MetricsImpl.java @@ -33,6 +33,7 @@ import com.google.cloud.bigtable.data.v2.internal.csm.tracers.CompositeTracerFactory; import com.google.cloud.bigtable.data.v2.internal.csm.tracers.Pacemaker; import com.google.common.base.Preconditions; +import com.google.common.base.Suppliers; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import io.grpc.ManagedChannelBuilder; @@ -190,7 +191,8 @@ public static OpenTelemetrySdk createBuiltinOtel( BigtableCloudMonitoringExporter exporter = BigtableCloudMonitoringExporter.create( metricRegistry, - EnvInfo::detect, + // Lazily compute EnvInfo, but memoize it to make sure it stays constant + Suppliers.memoize(EnvInfo::detect), clientInfo, credentials, metricsEndpoint,