Dmitry Konstantinov created CASSANDRA-20073:
-----------------------------------------------
Summary: AbstractCommitLogService#lastSyncedAt initialized with
currentTimeMillis() but later compared and updated with System.nanoTime()
Key: CASSANDRA-20073
URL: https://issues.apache.org/jira/browse/CASSANDRA-20073
Project: Cassandra
Issue Type: Bug
Components: Local/Commit Log
Reporter: Dmitry Konstantinov
Within org.apache.cassandra.db.commitlog.AbstractCommitLogService
we use System.currentMillis()-based time to initialize lastSyncedAt field:
{code:java}
protected volatile long lastSyncedAt = currentTimeMillis();{code}
but later we use clock.now() = System.nanoTime() to compare and update the
field value:
{code:java}
long pollStarted = clock.now();
boolean flushToDisk = lastSyncedAt + syncIntervalNanos <= pollStarted || state
!= NORMAL || syncRequested; {code}
As of now we are lucky that in the current JDK implementation
System.nanoTime() is much bigger than currentTimeMillis() but it is not
guaranteed.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]