Skip to content

Commit c0fad79

Browse files
committed
fallback to no handler, instead of Otel
1 parent f91df37 commit c0fad79

4 files changed

Lines changed: 32 additions & 56 deletions

File tree

packages/google-cloud-bigtable/google/cloud/bigtable/data/_async/client.py

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -273,32 +273,28 @@ def __init__(
273273
"is the default."
274274
)
275275
self._is_closed = CrossSync.Event()
276-
if os.getenv("BIGTABLE_EMULATOR_HOST"):
277-
self._metrics_handler = OpenTelemetryMetricsHandler(
278-
client_version=self._client_version(),
279-
)
280-
else:
276+
handlers: list[MetricsHandler] = []
277+
if self._emulator_host is None:
281278
try:
282279
# create a metrics exporter using the same client configuration
283280
exporter = BigtableMetricsExporter(
284281
credentials=credentials,
285282
client_options=client_options,
286283
)
287-
self._metrics_handler = GoogleCloudMetricsHandler(
288-
exporter=exporter,
289-
client_version=self._client_version(),
284+
handlers.append(
285+
GoogleCloudMetricsHandler(
286+
exporter=exporter,
287+
client_version=self._client_version(),
288+
)
290289
)
291290
except Exception as e:
292291
_LOGGER.warning(
293292
"Failed to initialize Google Cloud Metrics Exporter: %s. "
294-
"Falling back to local OpenTelemetry metrics handler.",
293+
"Client-side metrics will be disabled.",
295294
e,
296295
)
297-
self._metrics_handler = OpenTelemetryMetricsHandler(
298-
client_version=self._client_version(),
299-
)
300296
self._metrics = BigtableClientSideMetricsController(
301-
handlers=[self._metrics_handler]
297+
handlers=handlers
302298
)
303299
self.transport = cast(TransportType, self._gapic_client.transport)
304300
# keep track of active instances to for warmup on channel refresh

packages/google-cloud-bigtable/google/cloud/bigtable/data/_sync_autogen/client.py

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -204,31 +204,27 @@ def __init__(
204204
f"The configured universe domain ({self.universe_domain}) does not match the universe domain found in the credentials ({self._credentials.universe_domain}). If you haven't configured the universe domain explicitly, `googleapis.com` is the default."
205205
)
206206
self._is_closed = CrossSync._Sync_Impl.Event()
207-
if os.getenv("BIGTABLE_EMULATOR_HOST"):
208-
self._metrics_handler = OpenTelemetryMetricsHandler(
209-
client_version=self._client_version()
210-
)
211-
else:
207+
handlers: list[MetricsHandler] = []
208+
if self._emulator_host is None:
212209
try:
213210
exporter = BigtableMetricsExporter(
214211
credentials=credentials,
215212
client_options=client_options,
216213
)
217-
self._metrics_handler = GoogleCloudMetricsHandler(
218-
exporter=exporter,
219-
client_version=self._client_version(),
214+
handlers.append(
215+
GoogleCloudMetricsHandler(
216+
exporter=exporter,
217+
client_version=self._client_version(),
218+
)
220219
)
221220
except Exception as e:
222221
_LOGGER.warning(
223222
"Failed to initialize Google Cloud Metrics Exporter: %s. "
224-
"Falling back to local OpenTelemetry metrics handler.",
223+
"Client-side metrics will be disabled.",
225224
e,
226225
)
227-
self._metrics_handler = OpenTelemetryMetricsHandler(
228-
client_version=self._client_version(),
229-
)
230226
self._metrics = BigtableClientSideMetricsController(
231-
handlers=[self._metrics_handler]
227+
handlers=handlers
232228
)
233229
self.transport = cast(TransportType, self._gapic_client.transport)
234230
self._active_instances: Set[_WarmedInstanceKey] = set()

packages/google-cloud-bigtable/tests/unit/data/_async/test_client.py

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -259,13 +259,8 @@ async def test_metrics_exporter_init_shares_arguments(
259259
side_effect=Exception("Auth error"),
260260
)
261261
async def test_metrics_exporter_init_error_fallback(self, mock_sync, mock_async):
262-
from google.cloud.bigtable.data._metrics.handlers.opentelemetry import (
263-
OpenTelemetryMetricsHandler,
264-
)
265-
266262
async with self._make_client(use_emulator=False) as client:
267-
assert isinstance(client._metrics.handlers[0], OpenTelemetryMetricsHandler)
268-
assert getattr(client._metrics.handlers[0], "_exporter", None) is None
263+
assert len(client._metrics.handlers) == 0
269264

270265
@CrossSync.pytest
271266
@mock.patch("google.cloud.bigtable.data._async.client.BigtableMetricsExporter")
@@ -1342,11 +1337,10 @@ async def test_ctor(self, use_emulator):
13421337
assert instance_key in client._active_instances
13431338
assert client._instance_owners[instance_key] == {id(table)}
13441339
assert isinstance(client._metrics, BigtableClientSideMetricsController)
1345-
assert len(client._metrics.handlers) == 1
13461340
if use_emulator:
1347-
assert isinstance(client._metrics.handlers[0], OpenTelemetryMetricsHandler)
1348-
assert getattr(client._metrics.handlers[0], "_exporter", None) is None
1341+
assert len(client._metrics.handlers) == 0
13491342
else:
1343+
assert len(client._metrics.handlers) == 1
13501344
assert isinstance(client._metrics.handlers[0], GoogleCloudMetricsHandler)
13511345
assert isinstance(
13521346
client._metrics.handlers[0]._exporter, BigtableMetricsExporter
@@ -1737,11 +1731,10 @@ async def test_ctor(self, use_emulator):
17371731
assert instance_key in client._active_instances
17381732
assert client._instance_owners[instance_key] == {id(view)}
17391733
assert isinstance(client._metrics, BigtableClientSideMetricsController)
1740-
assert len(client._metrics.handlers) == 1
17411734
if use_emulator:
1742-
assert isinstance(client._metrics.handlers[0], OpenTelemetryMetricsHandler)
1743-
assert getattr(client._metrics.handlers[0], "_exporter", None) is None
1735+
assert len(client._metrics.handlers) == 0
17441736
else:
1737+
assert len(client._metrics.handlers) == 1
17451738
assert isinstance(client._metrics.handlers[0], GoogleCloudMetricsHandler)
17461739
assert isinstance(
17471740
client._metrics.handlers[0]._exporter, BigtableMetricsExporter
@@ -1864,11 +1857,10 @@ async def test_ctor(self, use_emulator):
18641857
assert instance_key in client._active_instances
18651858
assert client._instance_owners[instance_key] == {id(view)}
18661859
assert isinstance(client._metrics, BigtableClientSideMetricsController)
1867-
assert len(client._metrics.handlers) == 1
18681860
if use_emulator:
1869-
assert isinstance(client._metrics.handlers[0], OpenTelemetryMetricsHandler)
1870-
assert getattr(client._metrics.handlers[0], "_exporter", None) is None
1861+
assert len(client._metrics.handlers) == 0
18711862
else:
1863+
assert len(client._metrics.handlers) == 1
18721864
assert isinstance(client._metrics.handlers[0], GoogleCloudMetricsHandler)
18731865
assert isinstance(
18741866
client._metrics.handlers[0]._exporter, BigtableMetricsExporter

packages/google-cloud-bigtable/tests/unit/data/_sync_autogen/test_client.py

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -229,13 +229,8 @@ def test_metrics_exporter_init_shares_arguments(
229229
side_effect=Exception("Auth error"),
230230
)
231231
def test_metrics_exporter_init_error_fallback(self, mock_sync, mock_async):
232-
from google.cloud.bigtable.data._metrics.handlers.opentelemetry import (
233-
OpenTelemetryMetricsHandler,
234-
)
235-
236232
with self._make_client(use_emulator=False) as client:
237-
assert isinstance(client._metrics.handlers[0], OpenTelemetryMetricsHandler)
238-
assert getattr(client._metrics.handlers[0], "_exporter", None) is None
233+
assert len(client._metrics.handlers) == 0
239234

240235
@mock.patch("google.cloud.bigtable.data._async.client.BigtableMetricsExporter")
241236
@mock.patch(
@@ -1124,11 +1119,10 @@ def test_ctor(self, use_emulator):
11241119
assert instance_key in client._active_instances
11251120
assert client._instance_owners[instance_key] == {id(table)}
11261121
assert isinstance(client._metrics, BigtableClientSideMetricsController)
1127-
assert len(client._metrics.handlers) == 1
11281122
if use_emulator:
1129-
assert isinstance(client._metrics.handlers[0], OpenTelemetryMetricsHandler)
1130-
assert getattr(client._metrics.handlers[0], "_exporter", None) is None
1123+
assert len(client._metrics.handlers) == 0
11311124
else:
1125+
assert len(client._metrics.handlers) == 1
11321126
assert isinstance(client._metrics.handlers[0], GoogleCloudMetricsHandler)
11331127
assert isinstance(
11341128
client._metrics.handlers[0]._exporter, BigtableMetricsExporter
@@ -1443,11 +1437,10 @@ def test_ctor(self, use_emulator):
14431437
assert instance_key in client._active_instances
14441438
assert client._instance_owners[instance_key] == {id(view)}
14451439
assert isinstance(client._metrics, BigtableClientSideMetricsController)
1446-
assert len(client._metrics.handlers) == 1
14471440
if use_emulator:
1448-
assert isinstance(client._metrics.handlers[0], OpenTelemetryMetricsHandler)
1449-
assert getattr(client._metrics.handlers[0], "_exporter", None) is None
1441+
assert len(client._metrics.handlers) == 0
14501442
else:
1443+
assert len(client._metrics.handlers) == 1
14511444
assert isinstance(client._metrics.handlers[0], GoogleCloudMetricsHandler)
14521445
assert isinstance(
14531446
client._metrics.handlers[0]._exporter, BigtableMetricsExporter
@@ -1564,11 +1557,10 @@ def test_ctor(self, use_emulator):
15641557
assert instance_key in client._active_instances
15651558
assert client._instance_owners[instance_key] == {id(view)}
15661559
assert isinstance(client._metrics, BigtableClientSideMetricsController)
1567-
assert len(client._metrics.handlers) == 1
15681560
if use_emulator:
1569-
assert isinstance(client._metrics.handlers[0], OpenTelemetryMetricsHandler)
1570-
assert getattr(client._metrics.handlers[0], "_exporter", None) is None
1561+
assert len(client._metrics.handlers) == 0
15711562
else:
1563+
assert len(client._metrics.handlers) == 1
15721564
assert isinstance(client._metrics.handlers[0], GoogleCloudMetricsHandler)
15731565
assert isinstance(
15741566
client._metrics.handlers[0]._exporter, BigtableMetricsExporter

0 commit comments

Comments
 (0)