Skip to content

Commit c0abaa4

Browse files
c24ttseaver
authored andcommitted
Fix trace client memory leak (googleapis#6856)
1 parent 143b042 commit c0abaa4

4 files changed

Lines changed: 16 additions & 2 deletions

File tree

trace/google/cloud/trace/client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ def trace_api(self):
5151
https://cloud.google.com/trace/docs/reference/v2/rpc/google.devtools.
5252
cloudtrace.v2
5353
"""
54-
self._trace_api = make_trace_api(self)
54+
if self._trace_api is None:
55+
self._trace_api = make_trace_api(self)
5556
return self._trace_api
5657

5758
def batch_write_spans(self, name, spans, retry=None, timeout=None):

trace/google/cloud/trace/v1/client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ def trace_api(self):
5353
https://cloud.google.com/trace/docs/reference/v1/rpc/google.devtools.
5454
cloudtrace.v1
5555
"""
56-
self._trace_api = make_trace_api(self)
56+
if self._trace_api is None:
57+
self._trace_api = make_trace_api(self)
5758
return self._trace_api
5859

5960
def patch_traces(self, traces, project_id=None):

trace/tests/unit/v1/test_client_v1.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ def make_api(client_obj):
6060
self.assertIs(api, api_obj)
6161
self.assertEqual(clients, [client])
6262

63+
def test_trace_api_existing(self):
64+
"""Check that the client caches _trace_api."""
65+
client = self._make_one(project=self.project, credentials=_make_credentials())
66+
client._trace_api = mock.sentinel.trace_api
67+
self.assertIs(client.trace_api, mock.sentinel.trace_api)
68+
6369
def test_patch_traces_default(self):
6470
from google.cloud.trace.v1._gapic import _TraceAPI
6571

trace/tests/unit/v2/test_client_v2.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ def make_api(client_obj):
6060
self.assertIs(api, api_obj)
6161
self.assertEqual(clients, [client])
6262

63+
def test_trace_api_existing(self):
64+
"""Check that the client caches _trace_api."""
65+
client = self._make_one(project=self.project, credentials=_make_credentials())
66+
client._trace_api = mock.sentinel.trace_api
67+
self.assertIs(client.trace_api, mock.sentinel.trace_api)
68+
6369
def test_batch_write_spans(self):
6470
from google.cloud.trace._gapic import _TraceAPI
6571

0 commit comments

Comments
 (0)