[ https://issues.apache.org/jira/browse/CURATOR-126?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14076686#comment-14076686 ]
ASF GitHub Bot commented on CURATOR-126: ---------------------------------------- Github user Randgalt commented on a diff in the pull request: https://github.com/apache/curator/pull/23#discussion_r15485603 --- Diff: curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorFrameworkImpl.java --- @@ -722,39 +725,35 @@ public void retriesExhausted(OperationAndData<String> operationAndData) private <DATA_TYPE> void handleBackgroundOperationException(OperationAndData<DATA_TYPE> operationAndData, Throwable e) { - do + if ( (operationAndData != null) && RetryLoop.isRetryException(e) ) { - if ( (operationAndData != null) && RetryLoop.isRetryException(e) ) + if ( !Boolean.getBoolean(DebugUtils.PROPERTY_DONT_LOG_CONNECTION_ISSUES) ) + { + log.debug("Retry-able exception received", e); + } + if ( client.getRetryPolicy().allowRetry(operationAndData.getThenIncrementRetryCount(), operationAndData.getElapsedTimeMs(), operationAndData) ) { if ( !Boolean.getBoolean(DebugUtils.PROPERTY_DONT_LOG_CONNECTION_ISSUES) ) { - log.debug("Retry-able exception received", e); + log.debug("Retrying operation"); } - if ( client.getRetryPolicy().allowRetry(operationAndData.getThenIncrementRetryCount(), operationAndData.getElapsedTimeMs(), operationAndData) ) + backgroundOperations.offer(operationAndData); + return; + } + else + { + if ( !Boolean.getBoolean(DebugUtils.PROPERTY_DONT_LOG_CONNECTION_ISSUES) ) { - if ( !Boolean.getBoolean(DebugUtils.PROPERTY_DONT_LOG_CONNECTION_ISSUES) ) - { - log.debug("Retrying operation"); - } - backgroundOperations.offer(operationAndData); - break; + log.debug("Retry policy did not allow retry"); } - else + if ( operationAndData.getErrorCallback() != null ) { - if ( !Boolean.getBoolean(DebugUtils.PROPERTY_DONT_LOG_CONNECTION_ISSUES) ) - { - log.debug("Retry policy did not allow retry"); - } - if ( operationAndData.getErrorCallback() != null ) - { - operationAndData.getErrorCallback().retriesExhausted(operationAndData); - } + operationAndData.getErrorCallback().retriesExhausted(operationAndData); } } - - logError("Background exception was not retry-able or retry gave up", e); } - while ( false ); + + logError("Background exception was not retry-able or retry gave up", e); --- End diff -- Yes, please revert. Create a separate PR if you like. > 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)