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)