-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
storage/rangefeed: per registration buffer
Modifies the rangefeed package so that each individual registration maintains an output buffer which is processed by a dedicated goroutine. This eliminates the possibility of a slow consumer blocking the processor from making progress. Previously, writing events to registrations was synchronous, meaning that a single slow consumer could cause the publishing process to block. If publishing was blocked for too long, the processor along with all registrations were immediately torn down. With this change, a slow consumer will no longer block its siblings; if a single consumer blocks for too long, it will enter an "overflow" state and will be torn down as soon as its existing buffer is fully processed. The registry/registration interface has been modified fairly significantly to accomodate this; the processor itself has seen modest modification (mostly moving functionality to the registry level and removing no-longer-needed support for the previous functionality). Some of the processor tests have been modified to account for the now asynchronous nature of publishing events to individual streams. Fixes #32945 Release note: None
- Loading branch information
Matt Tracy
committed
Jan 15, 2019
1 parent
9cf4ebc
commit 6bf35f1
Showing
7 changed files
with
562 additions
and
582 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.