[ https://issues.apache.org/jira/browse/GEODE-1813?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dan Smith reassigned GEODE-1813: -------------------------------- Assignee: Dan Smith > Queued events are not removed when using an AsyncEventListener with a fixed > partitioned region > ---------------------------------------------------------------------------------------------- > > Key: GEODE-1813 > URL: https://issues.apache.org/jira/browse/GEODE-1813 > Project: Geode > Issue Type: Bug > Components: wan > Reporter: Dan Smith > Assignee: Dan Smith > Fix For: 1.0.0-incubating > > > Using an AsyncEventListener with a fixed partitioned region results in > IllegalStateExceptions in the log and events not getting removed. > {noformat} > [vm_1][warn 2016/08/23 09:51:35.871 PDT <Event Processor for > GatewaySender_AsyncEventQueue_ln_0> tid=0x3d] An Exception occurred. The > dispatcher will continue. > [vm_1]java.lang.IllegalStateException: For FixedPartitionedRegion > "AsyncEventQueue_ln_PARALLEL_GATEWAY_SENDER_QUEUE", FixedPartitionResolver is > not available (neither through the partition attribute partition-resolver nor > key/callbackArg implementing FixedPartitionResolver) > [vm_1] at > com.gemstone.gemfire.internal.cache.PartitionedRegionHelper.getHashKey(PartitionedRegionHelper.java:626) > [vm_1] at > com.gemstone.gemfire.internal.cache.PartitionedRegionHelper.getHashKey(PartitionedRegionHelper.java:546) > [vm_1] at > com.gemstone.gemfire.internal.cache.PartitionedRegion.getKeyInfo(PartitionedRegion.java:10133) > [vm_1] at > com.gemstone.gemfire.internal.cache.EntryEventImpl.<init>(EntryEventImpl.java:237) > [vm_1] at > com.gemstone.gemfire.internal.cache.EntryEventImpl.create(EntryEventImpl.java:394) > [vm_1] at > com.gemstone.gemfire.internal.cache.EntryEventImpl.create(EntryEventImpl.java:328) > [vm_1] at > com.gemstone.gemfire.internal.cache.LocalRegion.newDestroyEntryEvent(LocalRegion.java:1167) > [vm_1] at > com.gemstone.gemfire.internal.cache.BucketRegionQueue.destroyKey(BucketRegionQueue.java:502) > [vm_1] at > com.gemstone.gemfire.internal.cache.wan.parallel.ParallelGatewaySenderQueue.destroyEventFromQueue(ParallelGatewaySenderQueue.java:1128) > [vm_1] at > com.gemstone.gemfire.internal.cache.wan.parallel.ParallelGatewaySenderQueue.remove(ParallelGatewaySenderQueue.java:1109) > [vm_1] at > com.gemstone.gemfire.internal.cache.wan.parallel.ParallelGatewaySenderQueue.remove(ParallelGatewaySenderQueue.java:1543) > [vm_1] at > com.gemstone.gemfire.internal.cache.wan.AbstractGatewaySenderEventProcessor.eventQueueRemove(AbstractGatewaySenderEventProcessor.java:238) > [vm_1] at > com.gemstone.gemfire.internal.cache.wan.AbstractGatewaySenderEventProcessor.handleSuccessfulBatchDispatch(AbstractGatewaySenderEventProcessor.java:910) > [vm_1] at > com.gemstone.gemfire.internal.cache.wan.AbstractGatewaySenderEventProcessor.processQueue(AbstractGatewaySenderEventProcessor.java:635) > [vm_1] at > com.gemstone.gemfire.internal.cache.wan.AbstractGatewaySenderEventProcessor.run(AbstractGatewaySenderEventProcessor.java:1058){noformat} > Analysis from [~barry.oglesby]: > This issue happens after the event has been processed by the > AsyncEventListener. When the event is removed from the BucketRegionQueue, an > EntryEventImpl is created. The EntryEventImpl constructor attempts to get the > appropriate bucket from which to remove the entry even though this has > already been decided by the data PR. For fixed partitioning, the getHashKey > method requires a FixedPartitionResolver, and since one has not been set in > the BucketRegionQueue, an exception is thrown. In the non-fixed partitioning > case, no PartitionResolver is necessary, so the fact that there isn't one set > doesn't matter. > The reason the getHashKey method goes down the fixed partitioning code path > is the colocated BucketRegionQueue's fixed partitioning attributes are set in > the PartitionedRegion constructor based on the parent's fixed partitioning > attributes. This is unnecessary in the BucketRegionQueue case. -- This message was sent by Atlassian JIRA (v6.3.4#6332)