We are in the process of migrating from Gemfire to Geode. Since moving some services to Geode we have found that if we have a network drop between a gemfire client and server then the recovery process never completes. It seems to enter a loop of recovering indexes which takes long enough that the socket seems to be reset and the process is repeated.
[email protected]/java.util.concurrent.ConcurrentSkipListMap$Iter.advance(ConcurrentSkipListMap.java:2100)
[email protected]/java.util.concurrent.ConcurrentSkipListMap$EntryIterator.next(ConcurrentSkipListMap.java:2147)
[email protected]/java.util.concurrent.ConcurrentSkipListMap$EntryIterator.next(ConcurrentSkipListMap.java:2140)
org.apache.geode.cache.query.internal.index.MemoryIndexStore.getOldKey(MemoryIndexStore.java:264)
org.apache.geode.cache.query.internal.index.MemoryIndexStore.updateMapping(MemoryIndexStore.java:122)
org.apache.geode.cache.query.internal.index.CompactRangeIndex$IMQEvaluator.applyProjection(CompactRangeIndex.java:1593)
org.apache.geode.cache.query.internal.index.CompactRangeIndex$IMQEvaluator.doNestedIterations(CompactRangeIndex.java:1538)
org.apache.geode.cache.query.internal.index.CompactRangeIndex$IMQEvaluator.doNestedIterations(CompactRangeIndex.java:1549)
org.apache.geode.cache.query.internal.index.CompactRangeIndex$IMQEvaluator.evaluate(CompactRangeIndex.java:1400)
org.apache.geode.cache.query.internal.index.CompactRangeIndex.addMapping(CompactRangeIndex.java:145)
org.apache.geode.cache.query.internal.index.AbstractIndex.addIndexMapping(AbstractIndex.java:489)
org.apache.geode.cache.query.internal.index.IndexManager.addIndexMapping(IndexManager.java:1153)
org.apache.geode.cache.query.internal.index.IndexManager.processAction(IndexManager.java:1097)
org.apache.geode.cache.query.internal.index.IndexManager.updateIndexes(IndexManager.java:986)
org.apache.geode.cache.query.internal.index.IndexManager.updateIndexes(IndexManager.java:960)
org.apache.geode.internal.cache.AbstractRegionMap.initialImagePut(AbstractRegionMap.java:868)
org.apache.geode.internal.cache.LocalRegion.refreshEntriesFromServerKeys(LocalRegion.java:4309)
org.apache.geode.cache.client.internal.RegisterInterestOp$RegisterInterestOpImpl.processResponse(RegisterInterestOp.java:204)
org.apache.geode.cache.client.internal.AbstractOp.attemptReadResponse(AbstractOp.java:197)
org.apache.geode.cache.client.internal.AbstractOp.attempt(AbstractOp.java:384)
org.apache.geode.cache.client.internal.ConnectionImpl.execute(ConnectionImpl.java:284)
org.apache.geode.cache.client.internal.QueueConnectionImpl.execute(QueueConnectionImpl.java:191)
org.apache.geode.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication(OpExecutorImpl.java:756)
org.apache.geode.cache.client.internal.OpExecutorImpl.executeOn(OpExecutorImpl.java:480)
org.apache.geode.cache.client.internal.OpExecutorImpl.executeOn(OpExecutorImpl.java:493)
org.apache.geode.cache.client.internal.PoolImpl.executeOn(PoolImpl.java:855)
org.apache.geode.cache.client.internal.RegisterInterestOp.executeOn(RegisterInterestOp.java:103)
org.apache.geode.cache.client.internal.ServerRegionProxy.registerInterestOn(ServerRegionProxy.java:496)
org.apache.geode.cache.client.internal.QueueManagerImpl.recoverSingleKey(QueueManagerImpl.java:1209)
org.apache.geode.cache.client.internal.QueueManagerImpl.recoverSingleRegion(QueueManagerImpl.java:1158)
org.apache.geode.cache.client.internal.QueueManagerImpl.recoverSingleList(QueueManagerImpl.java:1103)
org.apache.geode.cache.client.internal.QueueManagerImpl.recoverInterestList(QueueManagerImpl.java:1223)
org.apache.geode.cache.client.internal.QueueManagerImpl.recoverAllInterestTypes(QueueManagerImpl.java:1237)
org.apache.geode.cache.client.internal.QueueManagerImpl.recoverInterest(QueueManagerImpl.java:1069)
org.apache.geode.cache.client.internal.QueueManagerImpl.recoverPrimary(QueueManagerImpl.java:928)
org.apache.geode.cache.client.internal.QueueManagerImpl.access$600(QueueManagerImpl.java:77)
org.apache.geode.cache.client.internal.QueueManagerImpl$RedundancySatisfierTask.run2(QueueManagerImpl.java:1448)
org.apache.geode.cache.client.internal.PoolImpl$PoolTask.run(PoolImpl.java:1334)
[email protected]/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[email protected]/java.util.concurrent.FutureTask.run(FutureTask.java:264)
Restarting the client recovers this issue as a fresh mirror of the regions and indexes loads quickly.