[ https://issues.apache.org/jira/browse/CURATOR-729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17910461#comment-17910461 ]
Kezhu Wang commented on CURATOR-729: ------------------------------------ The cause is multifold: 1. Error report to {{inBackground(callback).forPath(path)}} is not background. 2. Loop in the background callback. 3. {{CuratorFramework::watchers}} does not throw illegal state exception like others, say {{getData}}. > PersistentWatcher loops infinitely if curator get closed > -------------------------------------------------------- > > Key: CURATOR-729 > URL: https://issues.apache.org/jira/browse/CURATOR-729 > Project: Apache Curator > Issue Type: Bug > Affects Versions: 5.7.1 > Reporter: Kezhu Wang > Priority: Major > > Someone reported at > https://github.com/apache/curator/pull/464#issuecomment-2572419772 > {noformat} > "Curator-ConnectionStateManager-0" #441 daemon prio=5 os_prio=0 > cpu=53015334.98ms elapsed=240410.71s tid=0x00007fa9b0115000 nid=0x4b2 > runnable [0x00007fa97a360000] > java.lang.Thread.State: RUNNABLE > at > org.apache.curator.framework.imps.OperationAndData.<init>(OperationAndData.java:88) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:114) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:36) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.reset(PersistentWatcher.java:137) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.lambda$reset$3(PersistentWatcher.java:129) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher$$Lambda$2693/1366017559.processResult(Unknown > Source) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.sendToBackgroundCallback(CuratorFrameworkImpl.java:953) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.abortOperation(CuratorFrameworkImpl.java:726) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.handleBackgroundOperationException(CuratorFrameworkImpl.java:990) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:1055) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.processBackgroundOperation(CuratorFrameworkImpl.java:652) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:112) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:36) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.reset(PersistentWatcher.java:137) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.lambda$reset$3(PersistentWatcher.java:129) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher$$Lambda$2693/1366017559.processResult(Unknown > Source) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.sendToBackgroundCallback(CuratorFrameworkImpl.java:953) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.closeOperation(CuratorFrameworkImpl.java:746) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.queueOperation(CuratorFrameworkImpl.java:777) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.sleepAndQueueOperation(CuratorFrameworkImpl.java:1064) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:1027) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.processBackgroundOperation(CuratorFrameworkImpl.java:652) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:112) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:36) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.reset(PersistentWatcher.java:137) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.lambda$reset$3(PersistentWatcher.java:129) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher$$Lambda$2693/1366017559.processResult(Unknown > Source) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.sendToBackgroundCallback(CuratorFrameworkImpl.java:953) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.abortOperation(CuratorFrameworkImpl.java:726) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.handleBackgroundOperationException(CuratorFrameworkImpl.java:990) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:1055) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.processBackgroundOperation(CuratorFrameworkImpl.java:652) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:112) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:36) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.reset(PersistentWatcher.java:137) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.lambda$reset$3(PersistentWatcher.java:129) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher$$Lambda$2693/1366017559.processResult(Unknown > Source) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.sendToBackgroundCallback(CuratorFrameworkImpl.java:953) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.abortOperation(CuratorFrameworkImpl.java:726) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.handleBackgroundOperationException(CuratorFrameworkImpl.java:990) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:1055) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.processBackgroundOperation(CuratorFrameworkImpl.java:652) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:112) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:36) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.reset(PersistentWatcher.java:137) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.lambda$reset$3(PersistentWatcher.java:129) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher$$Lambda$2693/1366017559.processResult(Unknown > Source) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.sendToBackgroundCallback(CuratorFrameworkImpl.java:953) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.closeOperation(CuratorFrameworkImpl.java:746) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.queueOperation(CuratorFrameworkImpl.java:777) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.sleepAndQueueOperation(CuratorFrameworkImpl.java:1064) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:1027) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.processBackgroundOperation(CuratorFrameworkImpl.java:652) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:112) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:36) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.reset(PersistentWatcher.java:137) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.lambda$reset$3(PersistentWatcher.java:129) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher$$Lambda$2693/1366017559.processResult(Unknown > Source) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.sendToBackgroundCallback(CuratorFrameworkImpl.java:953) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.closeOperation(CuratorFrameworkImpl.java:746) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.queueOperation(CuratorFrameworkImpl.java:777) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.sleepAndQueueOperation(CuratorFrameworkImpl.java:1064) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:1027) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.processBackgroundOperation(CuratorFrameworkImpl.java:652) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:112) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:36) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.reset(PersistentWatcher.java:137) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.lambda$reset$3(PersistentWatcher.java:129) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher$$Lambda$2693/1366017559.processResult(Unknown > Source) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.sendToBackgroundCallback(CuratorFrameworkImpl.java:953) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.closeOperation(CuratorFrameworkImpl.java:746) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.queueOperation(CuratorFrameworkImpl.java:777) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.sleepAndQueueOperation(CuratorFrameworkImpl.java:1064) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:1027) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.processBackgroundOperation(CuratorFrameworkImpl.java:652) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:112) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:36) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.reset(PersistentWatcher.java:137) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.lambda$reset$3(PersistentWatcher.java:129) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher$$Lambda$2693/1366017559.processResult(Unknown > Source) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.sendToBackgroundCallback(CuratorFrameworkImpl.java:953) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.closeOperation(CuratorFrameworkImpl.java:746) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.queueOperation(CuratorFrameworkImpl.java:777) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.sleepAndQueueOperation(CuratorFrameworkImpl.java:1064) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:1027) > at > org.apache.curator.framework.imps.CuratorFrameworkImpl.processBackgroundOperation(CuratorFrameworkImpl.java:652) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:112) > at > org.apache.curator.framework.imps.AddWatchBuilderImpl.forPath(AddWatchBuilderImpl.java:36) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.reset(PersistentWatcher.java:137) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher.lambda$reset$3(PersistentWatcher.java:129) > at > org.apache.curator.framework.recipes.watch.PersistentWatcher$$Lambda$2693/1366017559.processResult(Unknown > Source) > {noformat} -- This message was sent by Atlassian Jira (v8.20.10#820010)