[ https://issues.apache.org/jira/browse/GEODE-4868?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
xiaojian zhou reassigned GEODE-4868: ------------------------------------ Assignee: xiaojian zhou > 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 > > {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)