[
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)