You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "ZhaoYang (JIRA)" <ji...@apache.org> on 2018/03/06 01:56:00 UTC

[jira] [Created] (CASSANDRA-14292) Batch commitlog performance regression in 3.0.16

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-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org