ZhaoYang created CASSANDRA-14292:
------------------------------------

             Summary: Batch commitlog performance regression in 3.0.16
                 Key: CASSANDRA-14292
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14292
             Project: Cassandra
          Issue Type: Bug
            Reporter: ZhaoYang
            Assignee: ZhaoYang
             Fix For: 3.0.x


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)..
{code:java|title=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);
}
{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to