You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "xiaojian zhou (JIRA)" <ji...@apache.org> on 2018/03/16 22:03:00 UTC
[jira] [Resolved] (GEODE-4868) when member deposed primary buckets,
it did not decrease the queue size
[ https://issues.apache.org/jira/browse/GEODE-4868?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
xiaojian zhou resolved GEODE-4868.
----------------------------------
Resolution: Fixed
Fix Version/s: 1.6.0
> when member deposed primary buckets, it did not decrease the queue size
> -----------------------------------------------------------------------
>
> Key: GEODE-4868
> URL: https://issues.apache.org/jira/browse/GEODE-4868
> Project: Geode
> Issue Type: Bug
> Components: wan
> Reporter: xiaojian zhou
> Assignee: xiaojian zhou
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.6.0
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> {noformat}
> It can use following test code to reproduce the issue:
> diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/AsyncEventQueueTestBase.java b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/AsyncEventQueueTestBase.java
> index 545d0cac4..fbc0dc015 100644
> --- a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/AsyncEventQueueTestBase.java
> +++ b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/AsyncEventQueueTestBase.java
> @@ -717,6 +717,10 @@ public class AsyncEventQueueTestBase extends JUnit4DistributedTestCase {
> }
> }
> final AsyncEventQueueStats statistics = ((AsyncEventQueueImpl) queue).getStatistics();
> + Awaitility.await().atMost(60, TimeUnit.SECONDS)
> + .until(() -> assertEquals("Expected queue entries: " + queueSize
> + + " but actual entries: " + statistics.getEventQueueSize(), queueSize,
> + statistics.getEventQueueSize()));
> assertEquals(queueSize, statistics.getEventQueueSize());
> assertEquals(eventsReceived, statistics.getEventsReceived());
> diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
> index 465f35a87..058bf19cc 100644
> --- a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
> +++ b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
> @@ -1519,6 +1519,11 @@ public class AsyncEventListenerDUnitTest extends AsyncEventQueueTestBase {
> () -> AsyncEventQueueTestBase.getAllPrimaryBucketsOnTheNode(getTestMethodName() + "_PR"));
>
> LogWriterUtils.getLogWriter().info("Primary buckets on vm2: " + primaryBucketsvm2);
> +
> + // before shutdown vm2, both vm1 and vm2 should have 40 events in primary queue
> + vm1.invoke(()->AsyncEventQueueTestBase.checkAsyncEventQueueStats("ln", 40,
> 80, 80, 0));
> + vm2.invoke(()->AsyncEventQueueTestBase.checkAsyncEventQueueStats("ln", 40, 80, 80, 0));
> +
> // ---------------------------- Kill vm2 --------------------------
> vm2.invoke(() -> AsyncEventQueueTestBase.killSender());
> // ----------------------------------------------------------------
> @@ -1527,15 +1532,26 @@ public class AsyncEventListenerDUnitTest extends AsyncEventQueueTestBase {
> vm3.invoke(createCacheRunnable(lnPort));
> vm3.invoke(() -> AsyncEventQueueTestBase.createAsyncEventQueueWithListener2("ln", true, 100, 5,
> false, null));
> + // vm3 will move some primary buckets from vm1, but vm1's primary queue size did not reduce
> + vm3.invoke(pauseAsyncEventQueueRunnable());
> vm3.invoke(() -> AsyncEventQueueTestBase.createPRWithRedundantCopyWithAsyncEventQueue(
> getTestMethodName() + "_PR", "ln", isOffHeap()));
> -
> +
> // ------------------------------------------------------------------
> String regionName = getTestMethodName() + "_PR";
> Set<Integer> primaryBucketsvm3 = (Set<Integer>) vm3
> .invoke(() -> AsyncEventQueueTestBase.getAllPrimaryBucketsOnTheNode(regionName));
> + LogWriterUtils.getLogWriter().info("Primary buckets on vm3: " + primaryBucketsvm3);
> + Set<Integer> primaryBucketsvm1 = (Set<Integer>) vm1.invoke(
> + () -> AsyncEventQueueTestBase.getAllPrimaryBucketsOnTheNode(getTestMethodName() + "_PR"));
> + LogWriterUtils.getLogWriter().info("After shutdown vm2, started vm3, Primary buckets on vm1: " + primaryBucketsvm1);
>
> +// vm1.invoke(()->AsyncEventQueueTestBase.checkAsyncEventQueueStats("ln", 80, 80, 80, 0));
> + vm1.invoke(()->AsyncEventQueueTestBase.checkAsyncEventQueueStats("ln", 40, 80, 80, 0));
> + vm3.invoke(()->AsyncEventQueueTestBase.checkAsyncEventQueueStats("ln", 40, 0, 0, 0));
> +
> + vm3.invoke(() -> AsyncEventQueueTestBase.resumeAsyncEventQueue("ln"));
> vm1.invoke(() -> AsyncEventQueueTestBase.resumeAsyncEventQueue("ln"));
>
> vm1.invoke(() -> AsyncEventQueueTestBase.waitForAsyncQueueToGetEmpty("ln"))
> The root cause is:
> when depose primary, it only check if bucket is a brq for data region. {noformat}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)