Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-14292

Fix batch commitlog sync regression

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Normal
    • Resolution: Fixed
    • Fix Version/s: 3.0.17, 3.11.3, 4.0, 4.0-alpha1
    • Component/s: None
    • Labels:
      None
    • Severity:
      Normal

      Description

      Prior to CASSANDRA-13987, in batch commitlog mode, commitlog will be synced to disk right after mutation comes.

      • haveWork semaphore is released in BatchCommitLogService.maybeWaitForSync
      • AbstractCommitlogService will continue and sync to disk

      After C-13987, it makes a branch for chain maker flush more frequently in periodic mode. To make sure in batch mode CL still flushes immediately, it added syncRequested flag.
      Unfortunately, in 3.0 branch, this flag is not being set to true when mutation is waiting.

      So in AbstractCommitlogService, it will not execute the CL sync branch until it reaches sync window(2ms)..

      AbstractCommitLogService.java
      if (lastSyncedAt + syncIntervalMillis <= pollStarted || shutdown || syncRequested)
      {
          // in this branch, we want to flush the commit log to disk
          syncRequested = false;
          commitLog.sync(shutdown, true);
          lastSyncedAt = pollStarted;
          syncComplete.signalAll();
      }
      else
      {
          // in this branch, just update the commit log sync headers
          commitLog.sync(false, false);
      }
      

        Attachments

        1. 14292-3.0-unittest.png
          117 kB
          Zhao Yang
        2. 14292-3.0-dtest.png
          770 kB
          Zhao Yang

          Issue Links

            Activity

              People

              • Assignee:
                jasonstack Zhao Yang
                Reporter:
                jasonstack Zhao Yang
                Authors:
                Zhao Yang
                Reviewers:
                Jason Brown
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: