You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by yz...@apache.org on 2015/11/18 14:41:02 UTC
[46/50] [abbrv] ignite git commit: Fixes sync.nodeMap access modifier;
Fixes sync.nodeMap access modifier;
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c1c8b210
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c1c8b210
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c1c8b210
Branch: refs/heads/ignite-638
Commit: c1c8b21018a658004ee43ed8cfed9fa7796382e1
Parents: d038b02
Author: Vladisav Jelisavcic <vl...@gmail.com>
Authored: Wed Nov 18 09:10:53 2015 +0100
Committer: vladisav <vl...@gmail.com>
Committed: Wed Nov 18 09:10:53 2015 +0100
----------------------------------------------------------------------
.../datastructures/GridCacheSemaphoreImpl.java | 48 +++++++++++++-------
1 file changed, 31 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c1c8b210/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheSemaphoreImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheSemaphoreImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheSemaphoreImpl.java
index 73638bc..befff13 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheSemaphoreImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheSemaphoreImpl.java
@@ -108,7 +108,7 @@ public final class GridCacheSemaphoreImpl implements GridCacheSemaphoreEx, Exter
private static final long serialVersionUID = 1192457210091910933L;
/** Map containing number of acquired permits for each node waiting on this semaphore. */
- protected Map<UUID, Integer> nodeMap;
+ private Map<UUID, Integer> nodeMap;
/** Flag indicating that it is safe to continue after node that acquired semaphore fails. */
final boolean failoverSafe;
@@ -148,6 +148,21 @@ public final class GridCacheSemaphoreImpl implements GridCacheSemaphoreEx, Exter
}
/**
+ * Get number of permits for node.
+ *
+ * @param nodeID
+ * @return Number of permits node has acquired at this semaphore. Can be less than 0 if
+ * more permits were released than acquired on node.
+ */
+ public int getPermitsForNode(UUID nodeID){
+ int ret = 0;
+ if(nodeMap.containsKey(nodeID)){
+ ret = nodeMap.get(nodeID);
+ }
+ return ret;
+ }
+
+ /**
* Sets the number of permits currently available on this semaphore. This method should only be used in
* {@linkplain GridCacheSemaphoreImpl#onUpdate(GridCacheSemaphoreState)}.
*
@@ -465,27 +480,26 @@ public final class GridCacheSemaphoreImpl implements GridCacheSemaphoreEx, Exter
}
@Override public void onNodeRemoved(UUID nodeID) {
- if (sync.nodeMap.containsKey(nodeID)) {
- int numPermits = sync.nodeMap.get(nodeID);
+ int numPermits = sync.getPermitsForNode(nodeID);
- if (numPermits > 0) {
- if (sync.failoverSafe) {
- // Release permits acquired by threads on failing node.
- sync.releaseFailedNode(nodeID);
- }
- else {
- // Interrupt every waiting thread if this semaphore is not failover safe.
- sync.broken = true;
-
- for(Thread t:sync.getSharedQueuedThreads()){
- t.interrupt();
- }
+ if (numPermits > 0) {
+ if (sync.failoverSafe) {
+ // Release permits acquired by threads on failing node.
+ sync.releaseFailedNode(nodeID);
+ }
+ else {
+ // Interrupt every waiting thread if this semaphore is not failover safe.
+ sync.broken = true;
- // Try to notify any waiting threads.
- sync.releaseShared(0);
+ for(Thread t:sync.getSharedQueuedThreads()){
+ t.interrupt();
}
+
+ // Try to notify any waiting threads.
+ sync.releaseShared(0);
}
}
+
}
/** {@inheritDoc} */