You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by zh...@apache.org on 2020/09/01 06:37:39 UTC
[geode] branch feature/GEODE-8475 created (now a706dfd)
This is an automated email from the ASF dual-hosted git repository.
zhouxj pushed a change to branch feature/GEODE-8475
in repository https://gitbox.apache.org/repos/asf/geode.git.
at a706dfd GEODE-8475: Resolve a potential dead lock in ParallelGatewaySenderQueue
This branch includes the following new commits:
new a706dfd GEODE-8475: Resolve a potential dead lock in ParallelGatewaySenderQueue
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[geode] 01/01: GEODE-8475: Resolve a potential dead lock in
ParallelGatewaySenderQueue
Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
zhouxj pushed a commit to branch feature/GEODE-8475
in repository https://gitbox.apache.org/repos/asf/geode.git
commit a706dfd42757e2994621ec9fa5bd189c5e4d759e
Author: zhouxh <gz...@pivotal.io>
AuthorDate: Mon Aug 31 23:33:30 2020 -0700
GEODE-8475: Resolve a potential dead lock in ParallelGatewaySenderQueue
Co-authored-by: Darrel Schneider <da...@vmware.com>
---
.../internal/cache/wan/parallel/ParallelGatewaySenderQueue.java | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueue.java b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueue.java
index 1a18d8d..a44feb7 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueue.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueue.java
@@ -755,12 +755,16 @@ public class ParallelGatewaySenderQueue implements RegionQueue {
bucketFullPath, brq);
}
if (brq != null) {
+ boolean intializingLocked = brq.lockWhenRegionIsInitializing();
brq.getInitializationLock().readLock().lock();
try {
putIntoBucketRegionQueue(brq, key, value);
putDone = true;
} finally {
brq.getInitializationLock().readLock().unlock();
+ if (intializingLocked) {
+ brq.unlockWhenRegionIsInitializing();
+ }
}
} else if (isDREvent) {
// in case of DR with PGS, if shadow bucket is not found event after
@@ -800,12 +804,16 @@ public class ParallelGatewaySenderQueue implements RegionQueue {
brq = (AbstractBucketRegionQueue) prQ.getCache()
.getInternalRegionByPath(bucketFullPath);
if (brq != null) {
+ boolean intializingLocked = brq.lockWhenRegionIsInitializing();
brq.getInitializationLock().readLock().lock();
try {
putIntoBucketRegionQueue(brq, key, value);
putDone = true;
} finally {
brq.getInitializationLock().readLock().unlock();
+ if (intializingLocked) {
+ brq.unlockWhenRegionIsInitializing();
+ }
}
} else {
tempQueue.add(value);