Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-61221

vBuckets cannot be rolled back concurrently

Details

    • Improvement
    • Resolution: Unresolved
    • Major
    • Morpheus
    • 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
    • couchbase-bucket
    • 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

        For Gerrit Dashboard: MB-61221
        # Subject Branch Project Status CR V

        Activity

          People

            pavlos.georgiou Pavlos Georgiou
            vesko.karaganev Vesko Karaganev
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There is 1 open Gerrit change

                PagerDuty