Title: Bidi BackgroundConsumer not Properly Notifying Caller on Fatal Processing Exceptions · Issue #820 · googleapis/python-api-core · GitHub
Open Graph Title: Bidi BackgroundConsumer not Properly Notifying Caller on Fatal Processing Exceptions · Issue #820 · googleapis/python-api-core
X Title: Bidi BackgroundConsumer not Properly Notifying Caller on Fatal Processing Exceptions · Issue #820 · googleapis/python-api-core
Description: This was discovered in Pub/Sub, whereby futures dependent on this class hang if not set with a timeout when a throw occurs in BackgroundConsumer's _thread_main. When we open a BackgroundConsumer, if something within the try block, e.g. o...
Open Graph Description: This was discovered in Pub/Sub, whereby futures dependent on this class hang if not set with a timeout when a throw occurs in BackgroundConsumer's _thread_main. When we open a BackgroundConsumer, i...
X Description: This was discovered in Pub/Sub, whereby futures dependent on this class hang if not set with a timeout when a throw occurs in BackgroundConsumer's _thread_main. When we open a BackgroundConsume...
Opengraph URL: https://github.com/googleapis/python-api-core/issues/820
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Bidi BackgroundConsumer not Properly Notifying Caller on Fatal Processing Exceptions","articleBody":"This was discovered in [Pub/Sub](https://github.com/googleapis/python-pubsub/tree/main), whereby futures dependent on this class hang if not set with a timeout when a throw occurs in [BackgroundConsumer's _thread_main](https://github.com/googleapis/python-api-core/blob/225bf75020ed3bda5f68b2dbd99a91499dd4acc9/google/api_core/bidi.py#L642-L687). \n\nWhen we [open a BackgroundConsumer](https://github.com/googleapis/python-pubsub/blob/4d072e088b59f692dc3d59c3197a2993c125917e/google/cloud/pubsub_v1/subscriber/_protocol/streaming_pull_manager.py#L879), if something within the try block, e.g. [open](https://github.com/googleapis/python-api-core/blob/225bf75020ed3bda5f68b2dbd99a91499dd4acc9/google/api_core/bidi.py#L646), throws, then the exception clauses [log but do not close the underlying stream or thread](https://github.com/googleapis/python-api-core/blob/main/google/api_core/bidi.py#L670-L687).\n\n I believe this will be fixed by adding allowing an optional parameter `on_fatal_exception` with which the consumer can opt to perform behavior with the fatal exception. With this, we can fail futures using the original exception that caused the RPC lifecycle to fail.\n\nI will be submitting a PR to address this.","author":{"url":"https://github.com/abbrowne126","@type":"Person","name":"abbrowne126"},"datePublished":"2025-05-23T16:15:52.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/820/python-api-core/issues/820"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:76cc84b2-a371-333f-755f-5bb6ddc5e991 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | A014:37B798:F72D54:1685D41:6A4E358C |
| html-safe-nonce | 28b0bd5d269ee94b5bb78b44b41c5b8978b048eca19c54ae03eb1ff371010679 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBMDE0OjM3Qjc5ODpGNzJENTQ6MTY4NUQ0MTo2QTRFMzU4QyIsInZpc2l0b3JfaWQiOiIyMzk5NjE0ODQ3Mjg3MTc4NjM2IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 4eeae341b0258d6e2c7b0478b8f28e86ba75274536bbbfe8806a3aa7a0fa62b2 |
| hovercard-subject-tag | issue:3086880810 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/googleapis/python-api-core/820/issue_layout |
| twitter:image | https://opengraph.githubassets.com/3ed629914b1709a9e4e6927abab730b75e25cdf09549dc52cfd2781b5d58f90d/googleapis/python-api-core/issues/820 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/3ed629914b1709a9e4e6927abab730b75e25cdf09549dc52cfd2781b5d58f90d/googleapis/python-api-core/issues/820 |
| og:image:alt | This was discovered in Pub/Sub, whereby futures dependent on this class hang if not set with a timeout when a throw occurs in BackgroundConsumer's _thread_main. When we open a BackgroundConsumer, i... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | abbrowne126 |
| hostname | github.com |
| expected-hostname | github.com |
| None | 030096ee0db095447bfe77409d33bfac127ca7128299c58deef27c52eaa1b1f0 |
| turbo-cache-control | no-preview |
| go-import | github.com/googleapis/python-api-core git https://github.com/googleapis/python-api-core.git |
| octolytics-dimension-user_id | 16785467 |
| octolytics-dimension-user_login | googleapis |
| octolytics-dimension-repository_id | 226992456 |
| octolytics-dimension-repository_nwo | googleapis/python-api-core |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 226992456 |
| octolytics-dimension-repository_network_root_nwo | googleapis/python-api-core |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 42a6d378d7587a44c93aca255096cd66b7c8eb2d |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width