Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc1b8afa

Browse files
fix: memory leak in bidi classes (#770)
* clean unneeded fields after close* added assertions to tests---------Co-authored-by: Anthonios Partheniou <partheniou@google.com>
1 parentfb1c3a9 commitc1b8afa

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

‎google/api_core/bidi.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,8 @@ def close(self):
306306
self._request_queue.put(None)
307307
self.call.cancel()
308308
self._request_generator=None
309+
self._initial_request=None
310+
self._callbacks= []
309311
# Don't set self.call to None. Keep it around so that send/recv can
310312
# raise the error.
311313

@@ -717,6 +719,7 @@ def stop(self):
717719
_LOGGER.warning("Background thread did not exit.")
718720

719721
self._thread=None
722+
self._on_response=None
720723

721724
@property
722725
defis_active(self):

‎tests/unit/test_bidi.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,9 @@ def test_close(self):
296296
# ensure the request queue was signaled to stop.
297297
assertbidi_rpc.pending_requests==1
298298
assertbidi_rpc._request_queue.get()isNone
299+
# ensure request and callbacks are cleaned up
300+
assertbidi_rpc._initial_requestisNone
301+
assertnotbidi_rpc._callbacks
299302

300303
deftest_close_no_rpc(self):
301304
bidi_rpc=bidi.BidiRpc(None)
@@ -623,6 +626,8 @@ def cancel_side_effect():
623626
assertbidi_rpc.pending_requests==1
624627
assertbidi_rpc._request_queue.get()isNone
625628
assertbidi_rpc._finalized
629+
assertbidi_rpc._initial_requestisNone
630+
assertnotbidi_rpc._callbacks
626631

627632
deftest_reopen_failure_on_rpc_restart(self):
628633
error1=ValueError("1")
@@ -777,6 +782,7 @@ def on_response(response):
777782
consumer.stop()
778783

779784
assertconsumer.is_activeisFalse
785+
assertconsumer._on_responseisNone
780786

781787
deftest_wake_on_error(self):
782788
should_continue=threading.Event()
@@ -884,6 +890,7 @@ def close_side_effect():
884890

885891
consumer.stop()
886892
assertconsumer.is_activeisFalse
893+
assertconsumer._on_responseisNone
887894

888895
# calling stop twice should not result in an error.
889896
consumer.stop()

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp