You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Swapnil Bawaskar (JIRA)" <ji...@apache.org> on 2016/10/25 07:18:08 UTC
[jira] [Closed] (GEODE-1819) BucketRegionQueue size and keySet can
become out of sync during initialization and never recover
[ https://issues.apache.org/jira/browse/GEODE-1819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Swapnil Bawaskar closed GEODE-1819.
-----------------------------------
> BucketRegionQueue size and keySet can become out of sync during initialization and never recover
> ------------------------------------------------------------------------------------------------
>
> Key: GEODE-1819
> URL: https://issues.apache.org/jira/browse/GEODE-1819
> Project: Geode
> Issue Type: Bug
> Components: wan
> Reporter: Barry Oglesby
> Assignee: Barry Oglesby
> Fix For: 1.0.0-incubating
>
>
> This bug is the same as GemFire Trac 48049 - One event was left behind in {{ParallelGatewaySenderQueue}} causing the test to hang.
> The issue occurs during {{BucketRegionQueue initialize}}. This method:
> - calls super initialize (which does GII)
> - loads events from temp queue
> - initializes eventSeqNumQueue
> If a destroy event occurs (from a {{ParallelQueueRemovalMessage}}) after the {{super initialize}} call but before the {{BucketRegionQueue initialize}} method completes, then it doesn't actually get removed from the {{CustomEntryConcurrentHashMap}} of entries. Instead, it ends up in the {{UnsharedImageState destroyedEntryKeys}} in {{DESTROYED}} state. The value in the entry is {{Token.DESTROYED}}. This happens because {{inTokenMode==true}} which is the case because {{AbstractBucketRegionQueue}} overrides {{isInitialized}} to return a boolean field, and this field is set to true at the end of {{BucketRegionQueue initialize}}. See {{LocalRegion.mapDestroy}} and {{lockGII}}. So, in effect, the {{BucketRegionQueue}} is not initialized until after the temp queue is drained, and the {{eventSeqNumQueue}} is initialized. Events in this state never get cleaned up, so the behavior is that size returns 1 but keySet returns empty set.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)