Simon Zhou created CASSANDRA-13877:
--------------------------------------
Summary: Potential concurrency issue with CDC size calculation
Key: CASSANDRA-13877
URL: https://issues.apache.org/jira/browse/CASSANDRA-13877
Project: Cassandra
Issue Type: Bug
Reporter: Simon Zhou
Assignee: Simon Zhou
We're backporting CDC feature and bug fixes to 3.0. There is potential
visibility issue with two variables CDCSizeTracker.sizeInProgress and
DirectorySizeCalculator.size. They're declared as volatile however there are
cases that when assigning new values to them, the new values depend on the
current value. For example:
https://github.com/apache/cassandra/blob/e9da85723a8dd40872c4bca087a03b655bd2cacb/src/java/org/apache/cassandra/db/commitlog/CommitLogSegmentManagerCDC.java#L285
https://github.com/apache/cassandra/blob/e9da85723a8dd40872c4bca087a03b655bd2cacb/src/java/org/apache/cassandra/db/commitlog/CommitLogSegmentManagerCDC.java#L297
In rare cases we'll not be able to calculate CDC data size correctly. We should
change these two variables back to AtomicLong, as the simplest fix. Java
Concurrency In Practice section 3.1.3 explains well why we shouldn't use
volatile in these two cases. I'll provide patch shortly.
cc [~JoshuaMcKenzie] [~jay.zhuang]
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]