fix(pubsub): handle None in on response callback #9982
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #9975.
This PR fixes an error that can occur when the streaming pull manager is being shut down when the underlying RPC gets shut down.
When that happens, the StreamingPullManager's _on_response() method is invoked with
None
(as opposed to aStreamingPullResponse
instance). This commit handles this case gracefully.How to test
(this is how I managed to reproduce the error on my machine consistently)
v1.1.0
(the bug does reportedly not occur in an earlier version, e.g.v1.0.2
)(alternative: close the channel manually:
subscriber.api.transport.channel.close()
Actual result (before the fix):
An error occurs during the shutdown ("'NoneType' object has no attribute 'received_messages'") in one of the background threads.
Expected result (after the fix):
No error occurs, and the streaming pull shuts down cleanly (check the DEBUG log output for details).
A sketch of the test script:
PR checklist