Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3.5] etcdserver: guarantee order of requested progress notifications #15695

Merged
merged 1 commit into from
Apr 11, 2023

Commits on Apr 11, 2023

  1. etcdserver: Guarantee order of requested progress notifications

    Progress notifications requested using ProgressRequest were sent
    directly using the ctrlStream, which means that they could race
    against watch responses in the watchStream.
    
    This would especially happen when the stream was not synced - e.g. if
    you requested a progress notification on a freshly created unsynced
    watcher, the notification would typically arrive indicating a revision
    for which not all watch responses had been sent.
    
    This changes the behaviour so that v3rpc always goes through the watch
    stream, using a new RequestProgressAll function that closely matches
    the behaviour of the v3rpc code - i.e.
    
    1. Generate a message with WatchId -1, indicating the revision for
       *all* watchers in the stream
    
    2. Guarantee that a response is (eventually) sent
    
    The latter might require us to defer the response until all watchers
    are synced, which is likely as it should be. Note that we do *not*
    guarantee that the number of progress notifications matches the number
    of requests, only that eventually at least one gets sent.
    
    Signed-off-by: Benjamin Wang <wachao@vmware.com>
    ahrtr committed Apr 11, 2023
    Configuration menu
    Copy the full SHA
    cd01925 View commit details
    Browse the repository at this point in the history