Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
send acks to upstream via separate process
This fixes some rare cases where upstream memcached tries to send TAP data and does not receive ACKS/NACKS we're trying to send it. This leads to deadlock where we're waiting for ack to be sent (blocking on memcached consuming some of it's queued nacks/acks) and memcached waiting on us receiving TAP data. TAP ack design requires us to be able to queue up to tap_ack_interval nacks. So doing downstream -> upstream path asynchronously achieves that. Without, hopefully, introducing any really excessive queuing. Because of, seemingly, limited amount of queued acks/nacks required. NOTE: when we're shutting ebucketmigrator down, we're dropping queued to-upstream data on the floor. But that's what essentially happened before anyways. Change-Id: I1a518e55e3a539976f921dea1afc0c7ccff15f48 Reviewed-on: http://review.couchbase.org/11859 Tested-by: Aliaksey Kandratsenka <alkondratenko@gmail.com> Reviewed-by: Aliaksey Artamonau <aliaksiej.artamonau@gmail.com>
- Loading branch information