Repository: cassandra
Updated Branches:
  refs/heads/trunk 35750e805 -> 7925f91dc


Allocate ReentrantLock on-demand in java11 AtomicBTreePartitionerBase

patch by jasobrown; reviewed by Robert Stupp for CASSANDRA-14637


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/7925f91d
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/7925f91d
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/7925f91d

Branch: refs/heads/trunk
Commit: 7925f91dc842834c39504b5f9a68db9b5c9fd879
Parents: 35750e8
Author: Jason Brown <[email protected]>
Authored: Fri Aug 10 07:31:28 2018 -0700
Committer: Jason Brown <[email protected]>
Committed: Tue Aug 14 09:48:40 2018 -0700

----------------------------------------------------------------------
 CHANGES.txt                                                   | 1 +
 .../cassandra/db/partitions/AtomicBTreePartitionBase.java     | 7 ++++++-
 2 files changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/7925f91d/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 52933c8..67e85f6 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 4.0
+ * Allocate ReentrantLock on-demand in java11 AtomicBTreePartitionerBase 
(CASSANDRA-14637)
  * Make all existing virtual tables use LocalPartitioner (CASSANDRA-14640)
  * Revert 4.0 GC alg back to CMS (CASANDRA-14636)
  * Remove hardcoded java11 jvm args in idea workspace files (CASSANDRA-14627)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/7925f91d/src/java11/org/apache/cassandra/db/partitions/AtomicBTreePartitionBase.java
----------------------------------------------------------------------
diff --git 
a/src/java11/org/apache/cassandra/db/partitions/AtomicBTreePartitionBase.java 
b/src/java11/org/apache/cassandra/db/partitions/AtomicBTreePartitionBase.java
index ac1a11d..56359a2 100644
--- 
a/src/java11/org/apache/cassandra/db/partitions/AtomicBTreePartitionBase.java
+++ 
b/src/java11/org/apache/cassandra/db/partitions/AtomicBTreePartitionBase.java
@@ -18,6 +18,7 @@
 
 package org.apache.cassandra.db.partitions;
 
+import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
 import java.util.concurrent.locks.ReentrantLock;
 
 import org.slf4j.Logger;
@@ -38,7 +39,8 @@ public abstract class AtomicBTreePartitionBase extends 
AbstractBTreePartition
     }
 
     // Replacement for Unsafe.monitorEnter/monitorExit.
-    private final ReentrantLock lock = new ReentrantLock();
+    private volatile ReentrantLock lock;
+    private static final AtomicReferenceFieldUpdater<AtomicBTreePartitionBase, 
ReentrantLock> lockUpdater = 
AtomicReferenceFieldUpdater.newUpdater(AtomicBTreePartitionBase.class, 
ReentrantLock.class, "lock");
 
     static
     {
@@ -50,6 +52,9 @@ public abstract class AtomicBTreePartitionBase extends 
AbstractBTreePartition
 
     protected final void acquireLock()
     {
+        if (lock == null)
+            lockUpdater.compareAndSet(this, null, new ReentrantLock());
+
         lock.lock();
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to