-
Notifications
You must be signed in to change notification settings - Fork 62
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MB-52884: Fix race condition to access the request
There is an optimization in the input buffer handling that we try to execute the command without copying out the entire input frame from the buffer in use by bufferevent. In the case where a command needs to block for some reason we would copy out the buffer. The various commands should have copied out the pieces of information they needed while working in their own threads, and then pass of the result to the front end thread when resuming from an ewb call. There is however some commands which try to send data directly from the background threads, and as part of doing a send response call it would try to look up the input buffer. That input buffer will change "right after" the command returned ewb, so these threads would race accessing that buffer. To work around the problem always copy out the buffer before calling these packets. Luckily for us these commands are not in the typical hot path and only carries a handfull of payload. Change-Id: Iaa055f3d08398c845de44f6f2657046a70566c49 Reviewed-on: https://review.couchbase.org/c/kv_engine/+/177325 Tested-by: Build Bot <build@couchbase.com> Reviewed-by: Paolo Cocchi <paolo.cocchi@couchbase.com>
- Loading branch information
Showing
1 changed file
with
186 additions
and
0 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