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