geode-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dan Smith (JIRA)" <>
Subject [jira] [Resolved] (GEODE-1813) Queued events are not removed when using an AsyncEventListener with a fixed partitioned region
Date Wed, 24 Aug 2016 16:57:20 GMT


Dan Smith resolved GEODE-1813.
       Resolution: Fixed
    Fix Version/s: 1.0.0-incubating

> Queued events are not removed when using an AsyncEventListener with a fixed partitioned
> ----------------------------------------------------------------------------------------------
>                 Key: GEODE-1813
>                 URL:
>             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(
> [vm_1]	at com.gemstone.gemfire.internal.cache.PartitionedRegionHelper.getHashKey(
> [vm_1]	at com.gemstone.gemfire.internal.cache.PartitionedRegion.getKeyInfo(
> [vm_1]	at com.gemstone.gemfire.internal.cache.EntryEventImpl.<init>(
> [vm_1]	at com.gemstone.gemfire.internal.cache.EntryEventImpl.create(
> [vm_1]	at com.gemstone.gemfire.internal.cache.EntryEventImpl.create(
> [vm_1]	at com.gemstone.gemfire.internal.cache.LocalRegion.newDestroyEntryEvent(
> [vm_1]	at com.gemstone.gemfire.internal.cache.BucketRegionQueue.destroyKey(
> [vm_1]	at com.gemstone.gemfire.internal.cache.wan.parallel.ParallelGatewaySenderQueue.destroyEventFromQueue(
> [vm_1]	at com.gemstone.gemfire.internal.cache.wan.parallel.ParallelGatewaySenderQueue.remove(
> [vm_1]	at com.gemstone.gemfire.internal.cache.wan.parallel.ParallelGatewaySenderQueue.remove(
> [vm_1]	at com.gemstone.gemfire.internal.cache.wan.AbstractGatewaySenderEventProcessor.eventQueueRemove(
> [vm_1]	at com.gemstone.gemfire.internal.cache.wan.AbstractGatewaySenderEventProcessor.handleSuccessfulBatchDispatch(
> [vm_1]	at com.gemstone.gemfire.internal.cache.wan.AbstractGatewaySenderEventProcessor.processQueue(
> [vm_1]	at{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

This message was sent by Atlassian JIRA

View raw message