[ https://issues.apache.org/jira/browse/CASSANDRA-14292?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jason Brown updated CASSANDRA-14292: ------------------------------------ Summary: Fix batch commitlog sync regression (was: Batch commitlog performance regression in 3.0.16) > Fix batch commitlog sync regression > ----------------------------------- > > Key: CASSANDRA-14292 > URL: https://issues.apache.org/jira/browse/CASSANDRA-14292 > Project: Cassandra > Issue Type: Bug > Reporter: ZhaoYang > Assignee: ZhaoYang > Priority: Major > Fix For: 3.0.x > > Attachments: 14292-3.0-dtest.png, 14292-3.0-unittest.png > > > 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