-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Subscriber can effectively deadlock itself when there are pending requests. #5103
Copy link
Copy link
Closed
Labels
api: pubsubIssues related to the Pub/Sub API.Issues related to the Pub/Sub API.priority: p1Important issue which blocks shipping the next release. Will be fixed prior to next release.Important issue which blocks shipping the next release. Will be fixed prior to next release.release blockingRequired feature/issue must be fixed prior to next release.Required feature/issue must be fixed prior to next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.Error or flaw in code with unintended results or allowing sub-optimal usage patterns.
Metadata
Metadata
Assignees
Labels
api: pubsubIssues related to the Pub/Sub API.Issues related to the Pub/Sub API.priority: p1Important issue which blocks shipping the next release. Will be fixed prior to next release.Important issue which blocks shipping the next release. Will be fixed prior to next release.release blockingRequired feature/issue must be fixed prior to next release.Required feature/issue must be fixed prior to next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.Error or flaw in code with unintended results or allowing sub-optimal usage patterns.
Due to emergent behavior between three different systems:
The subscriber can deadlock itself if it tries to re-establish a stream while the stream is paused due to request pressure, for example:
The load is
1.67because there are167requests which means the stream is paused. Because the stream is paused when the consumer tries to restart the stream the RPC is never started because to start the RPC the iterator must at least be started and the request iterator is blocked on the load going down. It won't go down because it can't send requests until the RPC is started.