{"action":"created","issue":{"url":"https://api.github.com/repos/jhalterman/lyra/issues/52","labels_url":"https://api.github.com/repos/jhalterman/lyra/issues/52/labels{/name}","comments_url":"https://api.github.com/repos/jhalterman/lyra/issues/52/comments","events_url":"https://api.github.com/repos/jhalterman/lyra/issues/52/events","html_url":"https://github.com/jhalterman/lyra/issues/52","id":96251288,"number":52,"title":"Connection recovery hangs infinitely ","user":{"login":"marcuslinke","id":2578608,"avatar_url":"https://avatars.githubusercontent.com/u/2578608?v=3","gravatar_id":"","url":"https://api.github.com/users/marcuslinke","html_url":"https://github.com/marcuslinke","followers_url":"https://api.github.com/users/marcuslinke/followers","following_url":"https://api.github.com/users/marcuslinke/following{/other_user}","gists_url":"https://api.github.com/users/marcuslinke/gists{/gist_id}","starred_url":"https://api.github.com/users/marcuslinke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marcuslinke/subscriptions","organizations_url":"https://api.github.com/users/marcuslinke/orgs","repos_url":"https://api.github.com/users/marcuslinke/repos","events_url":"https://api.github.com/users/marcuslinke/events{/privacy}","received_events_url":"https://api.github.com/users/marcuslinke/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-07-21T07:43:09Z","updated_at":"2015-08-04T17:46:25Z","closed_at":null,"body":"While my experiments with two rabbit nodes behind a load balancer i ran into a situation where both nodes where down for a short period. In this case the connection recovery hangs infinitely although both nodes came up again after a few seconds:\r\n\r\n```\r\nName: main\r\nState: WAITING on net.jodah.lyra.internal.util.concurrent.ReentrantCircuit$Sync@2224ea85\r\nTotal blocked: 4  Total waited: 53\r\n\r\nStack trace: \r\n sun.misc.Unsafe.park(Native Method)\r\njava.util.concurrent.locks.LockSupport.park(LockSupport.java:156)\r\njava.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811)\r\njava.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:969)\r\njava.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1281)\r\nnet.jodah.lyra.internal.util.concurrent.ReentrantCircuit.await(ReentrantCircuit.java:63)\r\nnet.jodah.lyra.internal.RetryableResource.callWithRetries(RetryableResource.java:76)\r\nnet.jodah.lyra.internal.ChannelHandler.invoke(ChannelHandler.java:167)\r\ncom.sun.proxy.$Proxy1.basicPublish(Unknown Source)\r\nde.na.messaging.rabbitmq.TestLoadBalancer.impl(TestLoadBalancer.java:124)\r\n```\r\n\r\nHere is my configuration:\r\n\r\n```\r\nRecoveryPolicy recoveryPolicy = new RecoveryPolicy().withBackoff(Duration.seconds(2), Duration.seconds(20))\r\n                .withMaxDuration(Duration.seconds(20));\r\n\r\nRetryPolicy retryPolicy = new RetryPolicy().withBackoff(Duration.seconds(3), Duration.seconds(60));\r\n```\r\n\r\nShouldn't the recovery attempt at least timeout after 20 seconds so a retry will occur or have I misunderstood something? "},"comment":{"url":"https://api.github.com/repos/jhalterman/lyra/issues/comments/127689616","html_url":"https://github.com/jhalterman/lyra/issues/52#issuecomment-127689616","issue_url":"https://api.github.com/repos/jhalterman/lyra/issues/52","id":127689616,"user":{"login":"jhalterman","id":228804,"avatar_url":"https://avatars.githubusercontent.com/u/228804?v=3","gravatar_id":"","url":"https://api.github.com/users/jhalterman","html_url":"https://github.com/jhalterman","followers_url":"https://api.github.com/users/jhalterman/followers","following_url":"https://api.github.com/users/jhalterman/following{/other_user}","gists_url":"https://api.github.com/users/jhalterman/gists{/gist_id}","starred_url":"https://api.github.com/users/jhalterman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jhalterman/subscriptions","organizations_url":"https://api.github.com/users/jhalterman/orgs","repos_url":"https://api.github.com/users/jhalterman/repos","events_url":"https://api.github.com/users/jhalterman/events{/privacy}","received_events_url":"https://api.github.com/users/jhalterman/received_events","type":"User","site_admin":false},"created_at":"2015-08-04T17:46:25Z","updated_at":"2015-08-04T17:46:25Z","body":"What are you doing with the two channels when the failure happens?"}}