You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2018/03/16 18:08:00 UTC

[jira] [Commented] (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:comment-tabpanel&focusedCommentId=16402283#comment-16402283 ] 

ASF subversion and git services commented on GEODE-4868:
--------------------------------------------------------

Commit d48607d51f718a6c497d7e6b14a8dc9b87fe2e67 in geode's branch refs/heads/develop from Xiaojian Zhou
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=d48607d ]

GEODE-4868: depose primary should reduce brq's size in deposePrimaryForColocatedChildren (#1625)



> 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
>          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)