Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
None
-
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)..
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
Attachments
Issue Links
- is caused by
-
CASSANDRA-14108 Improve commit log chain marker updating
- Resolved
- is related to
-
CASSANDRA-13987 Multithreaded commitlog subtly changed durability
- Resolved