You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MB-34850: Consumer: Accept (but ignore) messages after Close Stream
As identified during Sync Replication testing, it is possible for the
ns_server DCP proxy to forward DCP messages from the Producer to the
Consumer even after the DCP proxy has sent Close Stream to the
Consumer.
Currently these messages are treated as erroneous by the DCP Consumer,
causing it to send KEY_ENOENT responses back to the DCP Producer
(which hasn't started the Stream close process), and hence the DCP
Producer treats this as an error and tears down the connection,
ultimately resulting in rebalance failing.
Ideally these 'extra' messages would never be forwarded by ns_server,
however (a) the DCP Documentation[1] _does_ permit this behaviour, and
(b) it's non-trivial for ns_server to fix this issue in the DCP proxy
as two different processes handle the producer and consumer proxying,
and do not share state.
Instead this is addressed in ep-engine - any stream-level messages
received between the Close Stream request and the later Stream End
request should be silently ignored.
[1]: https://github.com/couchbase/kv_engine/blob/master/docs/dcp/documentation/commands/close-stream.md
Change-Id: I43700d534bb8072dec707ef143e89c308030ff64
Reviewed-on: http://review.couchbase.org/111745
Tested-by: Build Bot <[email protected]>
Reviewed-by: James Harrison <[email protected]>
Reviewed-by: Ben Huddleston <[email protected]>
0 commit comments