Details
-
Improvement
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
Performance
-
All
-
None
-
Description
Follow up to CASSANDRA-15922
Both CommitLogSegment and HintsBuffer use AtomicIntegers for the current offset when allocating. Like in CASSANDRA-15922 the loops on .compareAndSet(..) can be replaced with atomic adds using the . getAndAdd(..) method.
In highly contended environments the CAS failures can be high, starving writes in a running Cassandra node. On the same cluster CASSANDRA-15922 was found, after CASSANDRA-15922's fix was deployed, there was still problems around commit log flushing and hints. No flamegraph was collected that demonstrated the thread contention as clearly as was found in CASSANDRA-15922, but the performance fix proposed here hopefully is obvious enough.
Attachments
Issue Links
- relates to
-
CASSANDRA-15922 High CAS failures in NativeAllocator.Region.allocate(..)
- Resolved