[ https://issues.apache.org/jira/browse/GEODE-1819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Barry Oglesby resolved GEODE-1819. ---------------------------------- Resolution: Fixed > 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 > > 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)