You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ds...@apache.org on 2016/10/11 22:47:54 UTC
incubator-geode git commit: changed to an AtomicBoolean,
remove cache sync on addPartitionedRegion and
requiresNotificationFromPR
Repository: incubator-geode
Updated Branches:
refs/heads/feature/GEM-983 35441b8aa -> 7f920879a
changed to an AtomicBoolean, remove cache sync on addPartitionedRegion and requiresNotificationFromPR
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/7f920879
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/7f920879
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/7f920879
Branch: refs/heads/feature/GEM-983
Commit: 7f920879a7b75f8ffc624eadd34fe63dff27ffb8
Parents: 35441b8
Author: Darrel Schneider <ds...@pivotal.io>
Authored: Tue Oct 11 15:47:45 2016 -0700
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Tue Oct 11 15:47:45 2016 -0700
----------------------------------------------------------------------
.../geode/internal/cache/GemFireCacheImpl.java | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7f920879/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java
index de23cc3..9da3e79 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java
@@ -523,7 +523,7 @@ public class GemFireCacheImpl implements InternalCache, ClientCache, HasCachePer
private final Object clientMetaDatServiceLock = new Object();
- private volatile boolean isShutDownAll = false;
+ private final AtomicBoolean isShutDownAll = new AtomicBoolean(false);
private final ResourceAdvisor resourceAdvisor;
private final JmxManagerAdvisor jmxAdvisor;
@@ -642,7 +642,7 @@ public class GemFireCacheImpl implements InternalCache, ClientCache, HasCachePer
sb.append("GemFireCache[");
sb.append("id = " + System.identityHashCode(this));
sb.append("; isClosing = " + this.isClosing);
- sb.append("; isShutDownAll = " + this.isShutDownAll);
+ sb.append("; isShutDownAll = " + isCacheAtShutdownAll());
sb.append("; created = " + this.creationDate);
sb.append("; server = " + this.isServer);
sb.append("; copyOnRead = " + this.copyOnRead);
@@ -1641,7 +1641,7 @@ public class GemFireCacheImpl implements InternalCache, ClientCache, HasCachePer
}
public boolean isCacheAtShutdownAll() {
- return isShutDownAll;
+ return isShutDownAll.get();
}
/**
@@ -1656,8 +1656,6 @@ public class GemFireCacheImpl implements InternalCache, ClientCache, HasCachePer
}
public void shutDownAll() {
- synchronized(GemFireCacheImpl.class) {
- synchronized(this) {
boolean testIGE = Boolean.getBoolean("TestInternalGemFireError");
if (testIGE) {
@@ -1675,8 +1673,13 @@ public class GemFireCacheImpl implements InternalCache, ClientCache, HasCachePer
LocalRegion.ISSUE_CALLBACKS_TO_CACHE_OBSERVER = false;
}
}
- this.isShutDownAll = true;
+ if (!this.isShutDownAll.compareAndSet(false, true)) {
+ // it's already doing shutdown by another thread
+ return;
+ }
+ synchronized(GemFireCacheImpl.class) {
+ synchronized(this) {
// bug 44031 requires multithread shutdownall should be grouped
// by root region. However, shutDownAllDuringRecovery.conf test revealed that
// we have to close colocated child regions first.
@@ -4058,7 +4061,6 @@ public class GemFireCacheImpl implements InternalCache, ClientCache, HasCachePer
* cache requires, or does not require notification of all region/entry events.
*/
public void addPartitionedRegion(PartitionedRegion r) {
- synchronized (GemFireCacheImpl.class) {
synchronized (this.partitionedRegions) {
if (r.isDestroyed()) {
if (logger.isDebugEnabled()) {
@@ -4070,7 +4072,6 @@ public class GemFireCacheImpl implements InternalCache, ClientCache, HasCachePer
getCachePerfStats().incPartitionedRegions(1);
}
}
- }
}
/**
@@ -4163,7 +4164,6 @@ public class GemFireCacheImpl implements InternalCache, ClientCache, HasCachePer
* @return true if the region should deliver all of its events to this cache
*/
protected boolean requiresNotificationFromPR(PartitionedRegion r) {
- synchronized (GemFireCacheImpl.class) {
boolean hasSerialSenders = hasSerialSenders(r);
boolean result = hasSerialSenders;
if (!result) {
@@ -4178,7 +4178,6 @@ public class GemFireCacheImpl implements InternalCache, ClientCache, HasCachePer
}
return result;
- }
}
private boolean hasSerialSenders(PartitionedRegion r) {