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();
//