[ 
https://issues.apache.org/jira/browse/GEODE-5740?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anilkumar Gingade updated GEODE-5740:
-------------------------------------
    Description: 
On connection failures or timeout scenario; the operations are tried on another 
member. In case of destroy operation, the retried operation can throw 
EntryNotFoundException.

Scenario:

--Destroy is performed by Partitioned Region Accessor

--This gets applied on Node1; replicates it to Node3. Does not replicates to 
Node2.

--Node1 cache closes; before sending message back to accessor.

--Node2 and Node3 does region sync

--Accessor retries the op on Node2. Since its already applied Node2, it throws 
EntryNotFoundException

 

org.apache.geode.cache.EntryNotFoundException: Entry not found for key  
Object_58173
         at 
org.apache.geode.internal.cache.LocalRegion.checkEntryNotFound(LocalRegion.java:2772)
         at 
org.apache.geode.internal.cache.map.RegionMapDestroy.handleEntryNotFound(RegionMapDestroy.java:562)
         at 
org.apache.geode.internal.cache.map.RegionMapDestroy.retryRemoveWithTombstone(RegionMapDestroy.java:366)
         at 
org.apache.geode.internal.cache.map.RegionMapDestroy.checkTombstoneAndConcurrency(RegionMapDestroy.java:196)
         at 
org.apache.geode.internal.cache.map.RegionMapDestroy.destroy(RegionMapDestroy.java:144)
         at 
org.apache.geode.internal.cache.AbstractRegionMap.destroy(AbstractRegionMap.java:1022)
         at 
org.apache.geode.internal.cache.LocalRegion.mapDestroy(LocalRegion.java:6574)
         at 
org.apache.geode.internal.cache.LocalRegion.mapDestroy(LocalRegion.java:6548)
         at 
org.apache.geode.internal.cache.BucketRegion.basicDestroy(BucketRegion.java:1195)
         at 
org.apache.geode.internal.cache.PartitionedRegionDataStore.destroyLocally(PartitionedRegionDataStore.java:1360)
         at 
org.apache.geode.internal.cache.PartitionedRegionDataView.destroyOnRemote(PartitionedRegionDataView.java:107)
         at 
org.apache.geode.internal.cache.partitioned.DestroyMessage.operateOnPartitionedRegion(DestroyMessage.java:268)
         at 
org.apache.geode.internal.cache.partitioned.PartitionMessage.process(PartitionMessage.java:328)
         at 
org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:369)
         at 
org.apache.geode.distributed.internal.DistributionMessage.schedule(DistributionMessage.java:427)
         at 
org.apache.geode.distributed.internal.ClusterDistributionManager.scheduleIncomingMessage(ClusterDistributionManager.java:3223)
         at 
org.apache.geode.distributed.internal.ClusterDistributionManager.handleIncomingDMsg(ClusterDistributionManager.java:2889)
         at 
org.apache.geode.distributed.internal.ClusterDistributionManager.access$1700(ClusterDistributionManager.java:112)
         at 
org.apache.geode.distributed.internal.ClusterDistributionManager$DMListener.messageReceived(ClusterDistributionManager.java:3992)
         at 
org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.dispatchMessage(GMSMembershipManager.java:1118)
         at 
org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.handleOrDeferMessage(GMSMembershipManager.java:1037)
         at 
org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager$MyDCReceiver.messageReceived(GMSMembershipManager.java:400)
         at 
org.apache.geode.distributed.internal.direct.DirectChannel.receive(DirectChannel.java:728)
         at 
org.apache.geode.internal.tcp.TCPConduit.messageReceived(TCPConduit.java:868)
         at 
org.apache.geode.internal.tcp.Connection.dispatchMessage(Connection.java:3965)
         at 
org.apache.geode.internal.tcp.Connection.processNIOBuffer(Connection.java:3551)
         at 
org.apache.geode.internal.tcp.Connection.runNioReader(Connection.java:1827)
         at org.apache.geode.internal.tcp.Connection.run(Connection.java:1688)
         at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
         at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
         at java.lang.Thread.run(Thread.java:748)

  was:
On connection failures or timeout scenario; the operations are tried on another 
member. In case of destroy operation, the retried operation can throw 
EntryNotFoundException.

Scenario:

- Destroy is performed by Partitioned Region Accessor

- This gets applied on Node1; replicates it to Node3. Does not replicates to 
Node2.

- Node1 cache closes; before sending message back to accessor.

- Node2 and Node3 does region sync

- Accessor retries the op on Node2. Since its already applied Node2, it throws 
EntryNotFoundException

 

org.apache.geode.cache.EntryNotFoundException: Entry not found for key  
Object_58173
        at 
org.apache.geode.internal.cache.LocalRegion.checkEntryNotFound(LocalRegion.java:2772)
        at 
org.apache.geode.internal.cache.map.RegionMapDestroy.handleEntryNotFound(RegionMapDestroy.java:562)
        at 
org.apache.geode.internal.cache.map.RegionMapDestroy.retryRemoveWithTombstone(RegionMapDestroy.java:366)
        at 
org.apache.geode.internal.cache.map.RegionMapDestroy.checkTombstoneAndConcurrency(RegionMapDestroy.java:196)
        at 
org.apache.geode.internal.cache.map.RegionMapDestroy.destroy(RegionMapDestroy.java:144)
        at 
org.apache.geode.internal.cache.AbstractRegionMap.destroy(AbstractRegionMap.java:1022)
        at 
org.apache.geode.internal.cache.LocalRegion.mapDestroy(LocalRegion.java:6574)
        at 
org.apache.geode.internal.cache.LocalRegion.mapDestroy(LocalRegion.java:6548)
        at 
org.apache.geode.internal.cache.BucketRegion.basicDestroy(BucketRegion.java:1195)
        at 
org.apache.geode.internal.cache.PartitionedRegionDataStore.destroyLocally(PartitionedRegionDataStore.java:1360)
        at 
org.apache.geode.internal.cache.PartitionedRegionDataView.destroyOnRemote(PartitionedRegionDataView.java:107)
        at 
org.apache.geode.internal.cache.partitioned.DestroyMessage.operateOnPartitionedRegion(DestroyMessage.java:268)
        at 
org.apache.geode.internal.cache.partitioned.PartitionMessage.process(PartitionMessage.java:328)
        at 
org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:369)
        at 
org.apache.geode.distributed.internal.DistributionMessage.schedule(DistributionMessage.java:427)
        at 
org.apache.geode.distributed.internal.ClusterDistributionManager.scheduleIncomingMessage(ClusterDistributionManager.java:3223)
        at 
org.apache.geode.distributed.internal.ClusterDistributionManager.handleIncomingDMsg(ClusterDistributionManager.java:2889)
        at 
org.apache.geode.distributed.internal.ClusterDistributionManager.access$1700(ClusterDistributionManager.java:112)
        at 
org.apache.geode.distributed.internal.ClusterDistributionManager$DMListener.messageReceived(ClusterDistributionManager.java:3992)
        at 
org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.dispatchMessage(GMSMembershipManager.java:1118)
        at 
org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.handleOrDeferMessage(GMSMembershipManager.java:1037)
        at 
org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager$MyDCReceiver.messageReceived(GMSMembershipManager.java:400)
        at 
org.apache.geode.distributed.internal.direct.DirectChannel.receive(DirectChannel.java:728)
        at 
org.apache.geode.internal.tcp.TCPConduit.messageReceived(TCPConduit.java:868)
        at 
org.apache.geode.internal.tcp.Connection.dispatchMessage(Connection.java:3965)
        at 
org.apache.geode.internal.tcp.Connection.processNIOBuffer(Connection.java:3551)
        at 
org.apache.geode.internal.tcp.Connection.runNioReader(Connection.java:1827)
        at org.apache.geode.internal.tcp.Connection.run(Connection.java:1688)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)


> EntryNotFoundException is thrown on a retried operation
> -------------------------------------------------------
>
>                 Key: GEODE-5740
>                 URL: https://issues.apache.org/jira/browse/GEODE-5740
>             Project: Geode
>          Issue Type: Bug
>          Components: regions
>            Reporter: Anilkumar Gingade
>            Priority: Major
>
> On connection failures or timeout scenario; the operations are tried on 
> another member. In case of destroy operation, the retried operation can throw 
> EntryNotFoundException.
> Scenario:
> --Destroy is performed by Partitioned Region Accessor
> --This gets applied on Node1; replicates it to Node3. Does not replicates to 
> Node2.
> --Node1 cache closes; before sending message back to accessor.
> --Node2 and Node3 does region sync
> --Accessor retries the op on Node2. Since its already applied Node2, it 
> throws EntryNotFoundException
>  
> org.apache.geode.cache.EntryNotFoundException: Entry not found for key  
> Object_58173
>          at 
> org.apache.geode.internal.cache.LocalRegion.checkEntryNotFound(LocalRegion.java:2772)
>          at 
> org.apache.geode.internal.cache.map.RegionMapDestroy.handleEntryNotFound(RegionMapDestroy.java:562)
>          at 
> org.apache.geode.internal.cache.map.RegionMapDestroy.retryRemoveWithTombstone(RegionMapDestroy.java:366)
>          at 
> org.apache.geode.internal.cache.map.RegionMapDestroy.checkTombstoneAndConcurrency(RegionMapDestroy.java:196)
>          at 
> org.apache.geode.internal.cache.map.RegionMapDestroy.destroy(RegionMapDestroy.java:144)
>          at 
> org.apache.geode.internal.cache.AbstractRegionMap.destroy(AbstractRegionMap.java:1022)
>          at 
> org.apache.geode.internal.cache.LocalRegion.mapDestroy(LocalRegion.java:6574)
>          at 
> org.apache.geode.internal.cache.LocalRegion.mapDestroy(LocalRegion.java:6548)
>          at 
> org.apache.geode.internal.cache.BucketRegion.basicDestroy(BucketRegion.java:1195)
>          at 
> org.apache.geode.internal.cache.PartitionedRegionDataStore.destroyLocally(PartitionedRegionDataStore.java:1360)
>          at 
> org.apache.geode.internal.cache.PartitionedRegionDataView.destroyOnRemote(PartitionedRegionDataView.java:107)
>          at 
> org.apache.geode.internal.cache.partitioned.DestroyMessage.operateOnPartitionedRegion(DestroyMessage.java:268)
>          at 
> org.apache.geode.internal.cache.partitioned.PartitionMessage.process(PartitionMessage.java:328)
>          at 
> org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:369)
>          at 
> org.apache.geode.distributed.internal.DistributionMessage.schedule(DistributionMessage.java:427)
>          at 
> org.apache.geode.distributed.internal.ClusterDistributionManager.scheduleIncomingMessage(ClusterDistributionManager.java:3223)
>          at 
> org.apache.geode.distributed.internal.ClusterDistributionManager.handleIncomingDMsg(ClusterDistributionManager.java:2889)
>          at 
> org.apache.geode.distributed.internal.ClusterDistributionManager.access$1700(ClusterDistributionManager.java:112)
>          at 
> org.apache.geode.distributed.internal.ClusterDistributionManager$DMListener.messageReceived(ClusterDistributionManager.java:3992)
>          at 
> org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.dispatchMessage(GMSMembershipManager.java:1118)
>          at 
> org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.handleOrDeferMessage(GMSMembershipManager.java:1037)
>          at 
> org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager$MyDCReceiver.messageReceived(GMSMembershipManager.java:400)
>          at 
> org.apache.geode.distributed.internal.direct.DirectChannel.receive(DirectChannel.java:728)
>          at 
> org.apache.geode.internal.tcp.TCPConduit.messageReceived(TCPConduit.java:868)
>          at 
> org.apache.geode.internal.tcp.Connection.dispatchMessage(Connection.java:3965)
>          at 
> org.apache.geode.internal.tcp.Connection.processNIOBuffer(Connection.java:3551)
>          at 
> org.apache.geode.internal.tcp.Connection.runNioReader(Connection.java:1827)
>          at org.apache.geode.internal.tcp.Connection.run(Connection.java:1688)
>          at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>          at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>          at java.lang.Thread.run(Thread.java:748)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to