Darrel Schneider commented on GEODE-1900:

When I add these tests, I do see them fail but I think that is because the test 
is doing a localDestroyRegion on a bucket in the middle of the transaction 
commit. The product never does this. What it does is either ask the 
PartitionedRegionDataStore to remove a bucket and that operation always does a 
state flush which would cause the bucket move to not happen until the 
transaction commit completes.

What happens when these new tests fail is that they get into the 
AbstractRegionMap txApplyPut code and since an update is being done they do a 
test "getEntry" to see if the entry exists. Since the test called 
localRegionDestroy on the bucket no entries exist. So the txApplyPut returns 
early and does not add the event to the pendingCallbacks list and that is what 
causes the event to not be sent to clients registered with this server.

So I'm going to close this bug since it is not a valid test.

> Missing update (subsctiption) event with partitioned region during bucket 
> rebalance.
> ------------------------------------------------------------------------------------
>                 Key: GEODE-1900
>                 URL: https://issues.apache.org/jira/browse/GEODE-1900
>             Project: Geode
>          Issue Type: Bug
>          Components: regions
>            Reporter: Anilkumar Gingade
> Similar to GEODE-1885...In this case the issue is with update and with both 
> offheap and non-offheap regions.
> During transaction operation, if there is concurrent redundant bucket 
> re-balance is in progress, the client can miss update event, if its primary 
> queue is hosted on the node where bucket gets moved from.
> Consider, three node cluster N1, N2 and N3. With:
>     Client C1 connected to node N2.
>     Primary bucket region B1 on N1. And secondary bucket for B1 on N2.
>     A Transaction is started on N2, which updates an entry on B1.
>     When the TX is committed. At the same time the Bucket B1 on N2 is moved 
> to N3.
>     The Tx commit message from N1 is sent to N2. This also includes the 
> subscription message, satisfying the client C1.
>     On N2, for offheap region, when bucket is not found locally, the 
> exception response is sent to back to N1 without processing the subscription 
> message.
> How to reproduce:
> Add following tests/lines in ClientServerTransactionDUnitTest:
>   public void 
> testUpdateSubscriptionEventsWithOffheapPrWhileBucketRegionIsDestroyed() {   
> testSubscriptionEventsWithOffheapPrWhenBucketRegionIsDestroyed(forop.UPDATE);
>   }
>   public void 
> testUpdateSubscriptionEventsWithPrWhileBucketRegionIsDestroyed() {
>     testSubscriptionEventsWhenBucketRegionIsDestroyed(false, forop.UPDATE);
>   }

This message was sent by Atlassian JIRA

Reply via email to