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