You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bo...@apache.org on 2020/07/16 21:32:27 UTC
[geode] 01/01: GEODE-8366: Compared the input region's data policy
rather than the leader region's to the sender
This is an automated email from the ASF dual-hosted git repository.
boglesby pushed a commit to branch feature/GEODE-8366
in repository https://gitbox.apache.org/repos/asf/geode.git
commit cc53250ab8dc2451416ff3545dea9181fdb46667
Author: Barry Oglesby <bo...@pivotal.io>
AuthorDate: Thu Jul 16 14:29:38 2020 -0700
GEODE-8366: Compared the input region's data policy rather than the leader region's to the sender
---
.../wan/parallel/ParallelGatewaySenderQueue.java | 29 ++++++++++++++--------
1 file changed, 18 insertions(+), 11 deletions(-)
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 f8f3642..8e12c00 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
@@ -438,6 +438,11 @@ public class ParallelGatewaySenderQueue implements RegionQueue {
}
public void addShadowPartitionedRegionForUserPR(PartitionedRegion userPR) {
+ addShadowPartitionedRegionForUserPR(userPR, null);
+ }
+
+ public void addShadowPartitionedRegionForUserPR(PartitionedRegion userPR,
+ PartitionedRegion leaderRegion) {
if (logger.isDebugEnabled()) {
logger.debug("{} addShadowPartitionedRegionForUserPR: Attempting to create queue region: {}",
this, userPR.getDisplayName());
@@ -449,16 +454,17 @@ public class ParallelGatewaySenderQueue implements RegionQueue {
String regionName = userPR.getFullPath();
// Find if there is any parent region for this userPR
// if there is then no need to add another q for the same
- String leaderRegionName = ColocationHelper.getLeaderRegion(userPR).getFullPath();
- if (!regionName.equals(leaderRegionName)) {
- // Fix for defect #50364. Allow user to attach GatewaySender to child PR (without attaching
- // to leader PR)
- // though, internally, colocate the GatewaySender's shadowPR with the leader PR in
- // colocation chain
- if (!this.userRegionNameToShadowPRMap.containsKey(leaderRegionName)) {
- addShadowPartitionedRegionForUserPR(ColocationHelper.getLeaderRegion(userPR));
+ if (leaderRegion == null) {
+ String leaderRegionName = ColocationHelper.getLeaderRegion(userPR).getFullPath();
+ if (!regionName.equals(leaderRegionName)) {
+ // Fix for defect #50364. Allow user to attach GatewaySender to child PR (without
+ // attaching to leader PR) though, internally, colocate the GatewaySender's shadowPR with
+ // the leader PR in colocation chain
+ if (!this.userRegionNameToShadowPRMap.containsKey(leaderRegionName)) {
+ addShadowPartitionedRegionForUserPR(userPR, ColocationHelper.getLeaderRegion(userPR));
+ }
+ return;
}
- return;
}
if (this.userRegionNameToShadowPRMap.containsKey(regionName))
@@ -570,7 +576,8 @@ public class ParallelGatewaySenderQueue implements RegionQueue {
} finally {
if (prQ != null) {
- this.userRegionNameToShadowPRMap.put(userPR.getFullPath(), prQ);
+ this.userRegionNameToShadowPRMap
+ .put((leaderRegion == null ? userPR : leaderRegion).getFullPath(), prQ);
}
/*
* Here, enqueueTempEvents need to be invoked when a sender is already running and userPR is
@@ -581,7 +588,7 @@ public class ParallelGatewaySenderQueue implements RegionQueue {
if ((this.index == this.nDispatcher - 1) && this.sender.isRunning()) {
((AbstractGatewaySender) sender).enqueueTempEvents();
}
- afterRegionAdd(userPR);
+ afterRegionAdd(leaderRegion == null ? userPR : leaderRegion);
this.sender.getLifeCycleLock().writeLock().unlock();
}
}