[geode] branch support/1.13 updated: GEODE-8432: use regionPath directly instead of getRegion when put eve… (#5464)

2020-08-20 Thread zhouxj
This is an automated email from the ASF dual-hosted git repository.

zhouxj pushed a commit to branch support/1.13
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/support/1.13 by this push:
 new a028331  GEODE-8432: use regionPath directly instead of getRegion when 
put eve… (#5464)
a028331 is described below

commit a02833170431a601ce52a56c4cadb0042dac953a
Author: Xiaojian Zhou 
AuthorDate: Wed Aug 19 10:05:51 2020 -0700

GEODE-8432: use regionPath directly instead of getRegion when put eve… 
(#5464)


(cherry picked from commit 6f12a360d82f0de9259557af2bca34cd84e4b5f4)
---
 .../wan/parallel/ParallelGatewaySenderQueue.java   | 10 ++---
 .../ParallelGatewaySenderQueueJUnitTest.java   | 49 ++
 2 files changed, 53 insertions(+), 6 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 97d64a7..aff49e1 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
@@ -650,15 +650,13 @@ public class ParallelGatewaySenderQueue implements 
RegionQueue {
 
 boolean isDREvent = isDREvent(sender.getCache(), value);
 
-Region region = value.getRegion();
-String regionPath = null;
-if (isDREvent) {
-  regionPath = region.getFullPath();
-} else {
+String regionPath = value.getRegionPath();
+if (!isDREvent) {
+  Region region = sender.getCache().getRegion(regionPath, true);
   regionPath = ColocationHelper.getLeaderRegion((PartitionedRegion) 
region).getFullPath();
 }
 if (isDebugEnabled) {
-  logger.debug("Put is for the region {}", region);
+  logger.debug("Put is for the region {}", regionPath);
 }
 if (!this.userRegionNameToShadowPRMap.containsKey(regionPath)) {
   if (isDebugEnabled) {
diff --git 
a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueueJUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueueJUnitTest.java
index e7ca1a3..ba4d6ba 100644
--- 
a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueueJUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueueJUnitTest.java
@@ -17,7 +17,9 @@ package org.apache.geode.internal.cache.wan.parallel;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -36,6 +38,7 @@ import org.mockito.stubbing.Answer;
 
 import org.apache.geode.CancelCriterion;
 import org.apache.geode.cache.DataPolicy;
+import org.apache.geode.cache.PartitionAttributes;
 import org.apache.geode.cache.PartitionAttributesFactory;
 import org.apache.geode.cache.Region;
 import org.apache.geode.internal.cache.AbstractBucketRegionQueue;
@@ -72,6 +75,52 @@ public class ParallelGatewaySenderQueueJUnitTest {
   }
 
   @Test
+  public void whenReplicatedDataRegionNotReadyShouldNotThrowException() throws 
Exception {
+GatewaySenderEventImpl event = mock(GatewaySenderEventImpl.class);
+when(event.makeHeapCopyIfOffHeap()).thenReturn(event);
+when(event.getRegion()).thenReturn(null);
+String regionPath = "/testRegion";
+when(event.getRegionPath()).thenReturn(regionPath);
+Mockito.doThrow(new IllegalStateException()).when(event).release();
+Queue backingList = new LinkedList();
+backingList.add(event);
+
+queue = spy(queue);
+doReturn(true).when(queue).isDREvent(any(), any());
+boolean putDone = queue.put(event);
+assertThat(putDone).isFalse();
+  }
+
+  @Test
+  public void whenPartitionedDataRegionNotReadyShouldNotThrowException() 
throws Exception {
+GatewaySenderEventImpl event = mock(GatewaySenderEventImpl.class);
+when(event.makeHeapCopyIfOffHeap()).thenReturn(event);
+when(event.getRegion()).thenReturn(null);
+String regionPath = "/testRegion";
+when(event.getRegionPath()).thenReturn(regionPath);
+PartitionedRegion region = mock(PartitionedRegion.class);
+when(region.getFullPath()).thenReturn(regionPath);
+when(cache.getRegion(regionPath, true)).thenReturn(region);
+PartitionAttributes pa = mock(PartitionAttributes.class);
+when(region.getPartitionAttributes()).thenReturn(pa);
+when(pa.getColocatedWith()).thenReturn(null);
+
+Mockito.doThrow(new 

[geode] branch support/1.13 updated: GEODE-8432: use regionPath directly instead of getRegion when put eve… (#5464)

2020-08-20 Thread zhouxj
This is an automated email from the ASF dual-hosted git repository.

zhouxj pushed a commit to branch support/1.13
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/support/1.13 by this push:
 new a028331  GEODE-8432: use regionPath directly instead of getRegion when 
put eve… (#5464)
a028331 is described below

commit a02833170431a601ce52a56c4cadb0042dac953a
Author: Xiaojian Zhou 
AuthorDate: Wed Aug 19 10:05:51 2020 -0700

GEODE-8432: use regionPath directly instead of getRegion when put eve… 
(#5464)


(cherry picked from commit 6f12a360d82f0de9259557af2bca34cd84e4b5f4)
---
 .../wan/parallel/ParallelGatewaySenderQueue.java   | 10 ++---
 .../ParallelGatewaySenderQueueJUnitTest.java   | 49 ++
 2 files changed, 53 insertions(+), 6 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 97d64a7..aff49e1 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
@@ -650,15 +650,13 @@ public class ParallelGatewaySenderQueue implements 
RegionQueue {
 
 boolean isDREvent = isDREvent(sender.getCache(), value);
 
-Region region = value.getRegion();
-String regionPath = null;
-if (isDREvent) {
-  regionPath = region.getFullPath();
-} else {
+String regionPath = value.getRegionPath();
+if (!isDREvent) {
+  Region region = sender.getCache().getRegion(regionPath, true);
   regionPath = ColocationHelper.getLeaderRegion((PartitionedRegion) 
region).getFullPath();
 }
 if (isDebugEnabled) {
-  logger.debug("Put is for the region {}", region);
+  logger.debug("Put is for the region {}", regionPath);
 }
 if (!this.userRegionNameToShadowPRMap.containsKey(regionPath)) {
   if (isDebugEnabled) {
diff --git 
a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueueJUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueueJUnitTest.java
index e7ca1a3..ba4d6ba 100644
--- 
a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueueJUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueueJUnitTest.java
@@ -17,7 +17,9 @@ package org.apache.geode.internal.cache.wan.parallel;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -36,6 +38,7 @@ import org.mockito.stubbing.Answer;
 
 import org.apache.geode.CancelCriterion;
 import org.apache.geode.cache.DataPolicy;
+import org.apache.geode.cache.PartitionAttributes;
 import org.apache.geode.cache.PartitionAttributesFactory;
 import org.apache.geode.cache.Region;
 import org.apache.geode.internal.cache.AbstractBucketRegionQueue;
@@ -72,6 +75,52 @@ public class ParallelGatewaySenderQueueJUnitTest {
   }
 
   @Test
+  public void whenReplicatedDataRegionNotReadyShouldNotThrowException() throws 
Exception {
+GatewaySenderEventImpl event = mock(GatewaySenderEventImpl.class);
+when(event.makeHeapCopyIfOffHeap()).thenReturn(event);
+when(event.getRegion()).thenReturn(null);
+String regionPath = "/testRegion";
+when(event.getRegionPath()).thenReturn(regionPath);
+Mockito.doThrow(new IllegalStateException()).when(event).release();
+Queue backingList = new LinkedList();
+backingList.add(event);
+
+queue = spy(queue);
+doReturn(true).when(queue).isDREvent(any(), any());
+boolean putDone = queue.put(event);
+assertThat(putDone).isFalse();
+  }
+
+  @Test
+  public void whenPartitionedDataRegionNotReadyShouldNotThrowException() 
throws Exception {
+GatewaySenderEventImpl event = mock(GatewaySenderEventImpl.class);
+when(event.makeHeapCopyIfOffHeap()).thenReturn(event);
+when(event.getRegion()).thenReturn(null);
+String regionPath = "/testRegion";
+when(event.getRegionPath()).thenReturn(regionPath);
+PartitionedRegion region = mock(PartitionedRegion.class);
+when(region.getFullPath()).thenReturn(regionPath);
+when(cache.getRegion(regionPath, true)).thenReturn(region);
+PartitionAttributes pa = mock(PartitionAttributes.class);
+when(region.getPartitionAttributes()).thenReturn(pa);
+when(pa.getColocatedWith()).thenReturn(null);
+
+Mockito.doThrow(new