You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/03/03 16:36:46 UTC

ignite git commit: Added RW lock to better understand how latency affects throughput.

Repository: ignite
Updated Branches:
  refs/heads/ignite-atomic-good-lock-bench 7ddf07195 -> 08ede8bde


Added RW lock to better understand how latency affects throughput.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/08ede8bd
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/08ede8bd
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/08ede8bd

Branch: refs/heads/ignite-atomic-good-lock-bench
Commit: 08ede8bdec5747d0d8ef32242a9a82b52b297741
Parents: 7ddf071
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Thu Mar 3 18:36:34 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Thu Mar 3 18:36:34 2016 +0300

----------------------------------------------------------------------
 .../dht/atomic/GridDhtAtomicCache.java          | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/08ede8bd/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
index 1da930a..6abba47 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
@@ -31,6 +31,7 @@ import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 import javax.cache.expiry.ExpiryPolicy;
 import javax.cache.processor.EntryProcessor;
@@ -1321,6 +1322,8 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
         }
     }
 
+    private final ReadWriteLock lock = new ReentrantReadWriteLock();
+
     /**
      * Executes local update after preloader fetched values.
      *
@@ -1333,14 +1336,21 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
         GridNearAtomicUpdateRequest req,
         CI2<GridNearAtomicUpdateRequest, GridNearAtomicUpdateResponse> completionCb
     ) {
-        GridNearAtomicUpdateResponse res = new GridNearAtomicUpdateResponse(ctx.cacheId(), nodeId, req.futureVersion(),
-            ctx.deploymentEnabled());
+        lock.readLock().lock();
+
+        try {
+            GridNearAtomicUpdateResponse res = new GridNearAtomicUpdateResponse(ctx.cacheId(), nodeId, req.futureVersion(),
+                ctx.deploymentEnabled());
 
-        GridCacheReturn retVal = new GridCacheReturn(ctx, false, true, null, true);
+            GridCacheReturn retVal = new GridCacheReturn(ctx, false, true, null, true);
 
-        res.returnValue(retVal);
+            res.returnValue(retVal);
 
-        completionCb.apply(req, res);
+            completionCb.apply(req, res);
+        }
+        finally {
+            lock.readLock().unlock();
+        }
 
 //        List<KeyCacheObject> keys = req.keys();
 //