Leon Finker created GEODE-10453:
-----------------------------------

             Summary: Infinite/slow indexing on reconnect and register interest 
replay
                 Key: GEODE-10453
                 URL: https://issues.apache.org/jira/browse/GEODE-10453
             Project: Geode
          Issue Type: Bug
    Affects Versions: 1.15.1
            Reporter: Leon Finker


Cache server was restarted. Client side upon reconnect went into infinite/slow 
indexing loop. This has not recovered even after multiple days. The thread 
stack for thread taking 100% CPU was:

{code}
Thread Name <poolTimer-Server-21659> state <BLOCKED>
Waiting on <org.apache.geode.cache.client.internal.ConnectionImpl@293d172>
Owned By <queueTimer-Server1> with ID <140>
Executor Group <ScheduledThreadPoolExecutorWithKeepAlive>
Monitored metric <ResourceManagerStats.numThreadsStuck>
Thread stack for "poolTimer-Server-21659" (0x128275):
java.lang.ThreadState: BLOCKED
  at 
app//org.apache.geode.cache.client.internal.ConnectionImpl.execute(ConnectionImpl.java:283)
  at 
app//org.apache.geode.cache.client.internal.QueueConnectionImpl.execute(QueueConnectionImpl.java:191)
  at 
app//org.apache.geode.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication(OpExecutorImpl.java:760)
  at 
app//org.apache.geode.cache.client.internal.OpExecutorImpl.executeOnServer(OpExecutorImpl.java:343)
  at 
app//org.apache.geode.cache.client.internal.OpExecutorImpl.executeOn(OpExecutorImpl.java:312)
  at 
app//org.apache.geode.cache.client.internal.PoolImpl.executeOn(PoolImpl.java:848)
  at app//org.apache.geode.cache.client.internal.PingOp.execute(PingOp.java:40)
  at 
app//org.apache.geode.cache.client.internal.LiveServerPinger$PingTask.run2(LiveServerPinger.java:128)
  at 
app//org.apache.geode.cache.client.internal.PoolImpl$PoolTask.run(PoolImpl.java:1340)
  at 
java.base@17.0.6/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
  at 
java.base@17.0.6/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
  at 
app//org.apache.geode.internal.ScheduledThreadPoolExecutorWithKeepAlive$DelegatingScheduledFuture.run(ScheduledThreadPoolExecutorWithKeepAlive.java:285)
  at 
java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
  at 
java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
  at java.base@17.0.6/java.lang.Thread.run(Thread.java:833)
Locked ownable synchronizers:
  - None


Lock owner thread stack for "queueTimer-Server1" (0x6a):
java.lang.ThreadState: RUNNABLE
  at 
app//org.apache.geode.cache.query.internal.types.TypeUtils$ComparisonStrategy$4.execute(TypeUtils.java:90)
  at 
app//org.apache.geode.cache.query.internal.types.TypeUtils.compare(TypeUtils.java:499)
  at 
app//org.apache.geode.cache.query.internal.index.MemoryIndexStore.getOldKey(MemoryIndexStore.java:275)
  at 
app//org.apache.geode.cache.query.internal.index.MemoryIndexStore.updateMapping(MemoryIndexStore.java:122)
  at 
app//org.apache.geode.cache.query.internal.index.CompactRangeIndex$IMQEvaluator.applyProjection(CompactRangeIndex.java:1563)
  at 
app//org.apache.geode.cache.query.internal.index.CompactRangeIndex$IMQEvaluator.doNestedIterations(CompactRangeIndex.java:1519)
  at 
app//org.apache.geode.cache.query.internal.index.CompactRangeIndex$IMQEvaluator.evaluate(CompactRangeIndex.java:1372)
  at 
app//org.apache.geode.cache.query.internal.index.CompactRangeIndex.addMapping(CompactRangeIndex.java:143)
  at 
app//org.apache.geode.cache.query.internal.index.AbstractIndex.addIndexMapping(AbstractIndex.java:488)
  at 
app//org.apache.geode.cache.query.internal.index.IndexManager.addIndexMapping(IndexManager.java:1143)
  at 
app//org.apache.geode.cache.query.internal.index.IndexManager.processAction(IndexManager.java:1089)
  at 
app//org.apache.geode.cache.query.internal.index.IndexManager.updateIndexes(IndexManager.java:982)
  at 
app//org.apache.geode.cache.query.internal.index.IndexManager.updateIndexes(IndexManager.java:956)
  at 
app//org.apache.geode.internal.cache.AbstractRegionMap.initialImagePut(AbstractRegionMap.java:839)
  at 
app//org.apache.geode.internal.cache.LocalRegion.refreshEntriesFromServerKeys(LocalRegion.java:4348)
  at 
app//org.apache.geode.cache.client.internal.RegisterInterestOp$RegisterInterestOpImpl.processResponse(RegisterInterestOp.java:217)
  at 
app//org.apache.geode.cache.client.internal.RegisterInterestOp$RegisterInterestOpImpl.processResponse(RegisterInterestOp.java:121)
  at 
app//org.apache.geode.cache.client.internal.AbstractOp.attemptReadResponse(AbstractOp.java:209)
  at 
app//org.apache.geode.cache.client.internal.AbstractOp.attempt(AbstractOp.java:394)
  at 
app//org.apache.geode.cache.client.internal.ConnectionImpl.execute(ConnectionImpl.java:284)
  at 
app//org.apache.geode.cache.client.internal.QueueConnectionImpl.execute(QueueConnectionImpl.java:191)
  at 
app//org.apache.geode.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication(OpExecutorImpl.java:760)
  at 
app//org.apache.geode.cache.client.internal.OpExecutorImpl.executeOn(OpExecutorImpl.java:475)
  at 
app//org.apache.geode.cache.client.internal.OpExecutorImpl.executeOn(OpExecutorImpl.java:488)
  at 
app//org.apache.geode.cache.client.internal.PoolImpl.executeOn(PoolImpl.java:861)
  at 
app//org.apache.geode.cache.client.internal.RegisterInterestOp.executeOn(RegisterInterestOp.java:113)
  at 
app//org.apache.geode.cache.client.internal.ServerRegionProxy.registerInterestOn(ServerRegionProxy.java:506)
  at 
app//org.apache.geode.cache.client.internal.QueueManagerImpl.recoverSingleKey(QueueManagerImpl.java:1236)
  at 
app//org.apache.geode.cache.client.internal.QueueManagerImpl.recoverSingleRegion(QueueManagerImpl.java:1183)
  at 
app//org.apache.geode.cache.client.internal.QueueManagerImpl.recoverSingleList(QueueManagerImpl.java:1129)
  at 
app//org.apache.geode.cache.client.internal.QueueManagerImpl.recoverInterestList(QueueManagerImpl.java:1250)
  at 
app//org.apache.geode.cache.client.internal.QueueManagerImpl.recoverAllInterestTypes(QueueManagerImpl.java:1264)
  at 
app//org.apache.geode.cache.client.internal.QueueManagerImpl.recoverInterest(QueueManagerImpl.java:1094)
  at 
app//org.apache.geode.cache.client.internal.QueueManagerImpl.recoverPrimary(QueueManagerImpl.java:938)
  at 
app//org.apache.geode.cache.client.internal.QueueManagerImpl$RedundancySatisfierTask.run2(QueueManagerImpl.java:1475)
  at 
app//org.apache.geode.cache.client.internal.PoolImpl$PoolTask.run(PoolImpl.java:1340)
  at 
java.base@17.0.6/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
  at java.base@17.0.6/java.util.concurrent.FutureTask.run(FutureTask.java:264)
  at 
java.base@17.0.6/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
  at 
app//org.apache.geode.cache.query.internal.index.CompactRangeIndex$IMQEvaluator.doNestedIterations(CompactRangeIndex.java:1509)

{code}

After client stop attempt and cache close, the following stack trace was logged:

{code}
 The index is corrupted and
marked as invalid.
org.apache.geode.cache.CacheClosedException: The cache is closed.
        at 
org.apache.geode.internal.cache.GemFireCacheImpl$Stopper.generateCancelledException(GemFireCacheImpl.java:5207)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.CancelCriterion.checkCancelInProgress(CancelCriterion.java:83) 
~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.internal.cache.LocalRegion.checkRegionDestroyed(LocalRegion.java:7382)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.internal.cache.LocalRegion.checkReadiness(LocalRegion.java:2788)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.internal.cache.LocalRegion.values(LocalRegion.java:1970) 
~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.query.internal.QRegion.<init>(QRegion.java:81) 
~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.query.internal.index.DummyQRegion.<init>(DummyQRegion.java:52)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.query.internal.index.CompactRangeIndex$IMQEvaluator.evaluate(CompactRangeIndex.java:1342)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.query.internal.index.CompactRangeIndex.addMapping(CompactRangeIndex.java:143)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.query.internal.index.AbstractIndex.addIndexMapping(AbstractIndex.java:488)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.query.internal.index.IndexManager.addIndexMapping(IndexManager.java:1143)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.query.internal.index.IndexManager.processAction(IndexManager.java:1089)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.query.internal.index.IndexManager.updateIndexes(IndexManager.java:982)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.query.internal.index.IndexManager.updateIndexes(IndexManager.java:956)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.internal.cache.AbstractRegionMap.initialImagePut(AbstractRegionMap.java:839)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.internal.cache.LocalRegion.refreshEntriesFromServerKeys(LocalRegion.java:4348)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.RegisterInterestOp$RegisterInterestOpImpl.processResponse(RegisterInterestOp.java:217)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.RegisterInterestOp$RegisterInterestOpImpl.processResponse(RegisterInterestOp.java:121)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.AbstractOp.attemptReadResponse(AbstractOp.java:209)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.AbstractOp.attempt(AbstractOp.java:394) 
~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.ConnectionImpl.execute(ConnectionImpl.java:284)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.QueueConnectionImpl.execute(QueueConnectionImpl.java:191)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication(OpExecutorImpl.java:760)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.OpExecutorImpl.executeOn(OpExecutorImpl.java:475)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.OpExecutorImpl.executeOn(OpExecutorImpl.java:488)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.PoolImpl.executeOn(PoolImpl.java:861) 
~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.RegisterInterestOp.executeOn(RegisterInterestOp.java:113)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.ServerRegionProxy.registerInterestOn(ServerRegionProxy.java:506)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.QueueManagerImpl.recoverSingleKey(QueueManagerImpl.java:1236)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.QueueManagerImpl.recoverSingleRegion(QueueManagerImpl.java:1183)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.QueueManagerImpl.recoverSingleList(QueueManagerImpl.java:1129)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.QueueManagerImpl.recoverInterestList(QueueManagerImpl.java:1250)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.QueueManagerImpl.recoverAllInterestTypes(QueueManagerImpl.java:1264)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.QueueManagerImpl.recoverInterest(QueueManagerImpl.java:1094)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.QueueManagerImpl.recoverPrimary(QueueManagerImpl.java:938)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.QueueManagerImpl$RedundancySatisfierTask.run2(QueueManagerImpl.java:1475)
 ~[geode-core-1.15.1.jar:?]
        at 
org.apache.geode.cache.client.internal.PoolImpl$PoolTask.run(PoolImpl.java:1340)
 ~[geode-core-1.15.1.jar:?]
        at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
 ~[?:?]
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 
~[?:?]
{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to