[geode] branch support/1.13 updated: GEODE-8432: use regionPath directly instead of getRegion when put eve… (#5464)
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)
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