8888 // duration between two metric exports
8989 defaultSamplePeriod = time .Minute
9090
91+ disabledMetricsTracerFactory = & builtinMetricsTracerFactory {
92+ enabled : false ,
93+ shutdown : func () {},
94+ }
95+
9196 metricsErrorPrefix = "bigtable-metrics: "
9297
9398 clientName = fmt .Sprintf ("go-bigtable/%v" , internal .Version )
@@ -199,26 +204,22 @@ type builtinMetricsTracerFactory struct {
199204 debugTags metric.Int64Counter
200205}
201206
207+ // Returns error only if metricsProvider is of unknown type. Rest all errors are swallowed
202208func newBuiltinMetricsTracerFactory (ctx context.Context , project , instance , appProfile string , metricsProvider MetricsProvider , opts ... option.ClientOption ) (* builtinMetricsTracerFactory , error ) {
203209 if metricsProvider != nil {
204210 switch metricsProvider .(type ) {
205211 case NoopMetricsProvider :
206- return & builtinMetricsTracerFactory {
207- enabled : false ,
208- shutdown : func () {},
209- }, nil
212+ return disabledMetricsTracerFactory , nil
210213 default :
211- return & builtinMetricsTracerFactory {
212- enabled : false ,
213- shutdown : func () {},
214- }, errors .New ("unknown MetricsProvider type" )
214+ return disabledMetricsTracerFactory , errors .New ("bigtable: unknown MetricsProvider type" )
215215 }
216216 }
217217
218218 // Metrics are enabled.
219219 clientUID , err := generateClientUID ()
220220 if err != nil {
221- return nil , err
221+ // Swallow the error and disable metrics
222+ return disabledMetricsTracerFactory , nil
222223 }
223224
224225 tracerFactory := & builtinMetricsTracerFactory {
@@ -236,8 +237,8 @@ func newBuiltinMetricsTracerFactory(ctx context.Context, project, instance, appP
236237 // Create default meter provider
237238 mpOptions , err := builtInMeterProviderOptions (project , opts ... )
238239 if err != nil {
239- tracerFactory . enabled = false
240- return tracerFactory , err
240+ // Swallow the error and disable metrics
241+ return disabledMetricsTracerFactory , nil
241242 }
242243 meterProvider := sdkmetric .NewMeterProvider (mpOptions ... )
243244 tracerFactory .shutdown = func () { meterProvider .Shutdown (ctx ) }
@@ -246,9 +247,11 @@ func newBuiltinMetricsTracerFactory(ctx context.Context, project, instance, appP
246247 meter := meterProvider .Meter (builtInMetricsMeterName , metric .WithInstrumentationVersion (internal .Version ))
247248 err = tracerFactory .createInstruments (meter )
248249 if err != nil {
249- tracerFactory .enabled = false
250+ // Swallow the error and disable metrics
251+ return disabledMetricsTracerFactory , nil
250252 }
251- return tracerFactory , err
253+ // Swallow the error and disable metrics
254+ return tracerFactory , nil
252255}
253256
254257func builtInMeterProviderOptions (project string , opts ... option.ClientOption ) ([]sdkmetric.Option , error ) {
0 commit comments