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 2015/11/12 01:32:54 UTC
incubator-geode git commit: GEODE-540: prevent hang by not joining
while synchronized
Repository: incubator-geode
Updated Branches:
refs/heads/develop 05e047caf -> 8b04c3d7f
GEODE-540: prevent hang by not joining while synchronized
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/8b04c3d7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/8b04c3d7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/8b04c3d7
Branch: refs/heads/develop
Commit: 8b04c3d7f24cc5d3cb6ab9739c698c5996e17381
Parents: 05e047c
Author: Darrel Schneider <ds...@pivotal.io>
Authored: Wed Nov 11 16:09:41 2015 -0800
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Wed Nov 11 16:32:02 2015 -0800
----------------------------------------------------------------------
.../cache/control/OffHeapMemoryMonitor.java | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8b04c3d7/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/control/OffHeapMemoryMonitor.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/control/OffHeapMemoryMonitor.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/control/OffHeapMemoryMonitor.java
index 0a6674c..721e9a6 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/control/OffHeapMemoryMonitor.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/control/OffHeapMemoryMonitor.java
@@ -115,6 +115,7 @@ public class OffHeapMemoryMonitor implements ResourceMonitor, MemoryUsageListene
stopMonitoring(false);
}
public void stopMonitoring(boolean waitForThread) {
+ Thread threadToWaitFor = null;
synchronized (this) {
if (!this.started) {
return;
@@ -126,17 +127,19 @@ public class OffHeapMemoryMonitor implements ResourceMonitor, MemoryUsageListene
synchronized (this.offHeapMemoryUsageListener) {
this.offHeapMemoryUsageListener.notifyAll();
}
-
- if (waitForThread && this.memoryListenerThread != null) {
- try {
- this.memoryListenerThread.join();
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- }
+ if (waitForThread) {
+ threadToWaitFor = this.memoryListenerThread;
}
this.memoryListenerThread = null;
this.started = false;
}
+ if (threadToWaitFor != null) {
+ try {
+ threadToWaitFor.join();
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
}
public volatile OffHeapMemoryMonitorObserver testHook;