[ 
https://issues.apache.org/jira/browse/CURATOR-126?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14076839#comment-14076839
 ] 

ASF GitHub Bot commented on CURATOR-126:
----------------------------------------

Github user dragonsinth commented on a diff in the pull request:

    https://github.com/apache/curator/pull/23#discussion_r15490243
  
    --- Diff: 
curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorFrameworkImpl.java
 ---
    @@ -74,7 +71,7 @@
         private final NamespaceFacadeCache namespaceFacadeCache;
         private final NamespaceWatcherMap namespaceWatcherMap = new 
NamespaceWatcherMap(this);
     
    -    private volatile ExecutorService executorService;
    +    private volatile Thread backgroundThread;
    --- End diff --
    
    Fair point, I'll revert.
    
    BTW: I tried tracing back through the code and was not able to locate the 
code path from ExecutorService.shutdownNow() -> FutureTask.cancel() under 1.6.  
So I might actually be confused and thinking of a Guava executor and not a JDK 
one, it's possible the JDK shutdownNow() is actually safe.  If so, apologizes 
for the mis-info.
    
    Either way, CloseableExecutorService.close() probably does have the issue 
since it does an explicit cancel(true).



> IllegalStateException in performBackgroundOperation during close
> ----------------------------------------------------------------
>
>                 Key: CURATOR-126
>                 URL: https://issues.apache.org/jira/browse/CURATOR-126
>             Project: Apache Curator
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: 2.5.0
>            Reporter: Scott Blum
>            Assignee: Cameron McKenzie
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> {code}
> [CuratorFramework-0] ERROR 
> org.apache.curator.framework.imps.CuratorFrameworkImpl  - Background 
> exception was not retry-able or retry gave up
> java.lang.IllegalStateException: Client is not started
>       at 
> com.google.common.base.Preconditions.checkState(Preconditions.java:176)
>       at 
> org.apache.curator.CuratorZookeeperClient.getZooKeeper(CuratorZookeeperClient.java:113)
>       at 
> org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:807)
>       at 
> org.apache.curator.framework.imps.CuratorFrameworkImpl.backgroundOperationsLoop(CuratorFrameworkImpl.java:793)
>       at 
> org.apache.curator.framework.imps.CuratorFrameworkImpl.access$400(CuratorFrameworkImpl.java:57)
>       at 
> org.apache.curator.framework.imps.CuratorFrameworkImpl$4.call(CuratorFrameworkImpl.java:275)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>       at java.lang.Thread.run(Thread.java:744)
> {code}
> I see this sometimes during test runs; I believe this happens because 
> CuratorZookeeperClient.started gets set to false during shutdown, but the 
> backgroundOperation loop can still be running since shutting down the 
> backgroundOperation loop is inherently racy.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to