Details
-
Improvement
-
Resolution: Unresolved
-
Major
-
7.6.0, 6.6.6, 7.0.0, 7.0.5, 7.1.0, 7.2.0, 7.2.1, 7.2.4, 7.2.2, 7.1.6, 7.2.3, 7.2.5
-
None
-
0
-
March-June 24
Description
KVBucket::rollback takes the vbsetMutex (vBucket map mutex) for the entire duration of the rollback. This means that only one vBucket can be rolled back at a time. Additionally, since there is no back-off on that mutex, if there's multiple rollbacks required, RollbackTasks will run on the WriterThreads but immediately block for the vbsetMutex.
For small number of Writer thread, this could mean that all Writer threads become unavailable.
The change to add a lock on vbsetMutex was originally added in https://review.couchbase.org/c/ep-engine/+/70029, but a lot has changed since then, and it might be possible to just remove that lock nowadays.
If not possible to remove trivially, the RollbackTask should back-off when it sees the vbsetMutex is locked, to allow writes to happen.
Attachments
Gerrit Reviews
For Gerrit Dashboard: MB-61221 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
209277,1 | MB-61221: Reschedule vbucket rollback task when vbsetMutex is locked | master | kv_engine | Status: NEW | 0 | -1 |