{"action":"opened","issue":{"url":"https://api.github.com/repos/Terracotta-OSS/tc-passthrough-testing/issues/70","repository_url":"https://api.github.com/repos/Terracotta-OSS/tc-passthrough-testing","labels_url":"https://api.github.com/repos/Terracotta-OSS/tc-passthrough-testing/issues/70/labels{/name}","comments_url":"https://api.github.com/repos/Terracotta-OSS/tc-passthrough-testing/issues/70/comments","events_url":"https://api.github.com/repos/Terracotta-OSS/tc-passthrough-testing/issues/70/events","html_url":"https://github.com/Terracotta-OSS/tc-passthrough-testing/issues/70","id":195395637,"number":70,"title":"Cannot invoke anymore after terminating active","user":{"login":"mathieucarbou","id":61346,"avatar_url":"https://avatars.githubusercontent.com/u/61346?v=3","gravatar_id":"","url":"https://api.github.com/users/mathieucarbou","html_url":"https://github.com/mathieucarbou","followers_url":"https://api.github.com/users/mathieucarbou/followers","following_url":"https://api.github.com/users/mathieucarbou/following{/other_user}","gists_url":"https://api.github.com/users/mathieucarbou/gists{/gist_id}","starred_url":"https://api.github.com/users/mathieucarbou/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mathieucarbou/subscriptions","organizations_url":"https://api.github.com/users/mathieucarbou/orgs","repos_url":"https://api.github.com/users/mathieucarbou/repos","events_url":"https://api.github.com/users/mathieucarbou/events{/privacy}","received_events_url":"https://api.github.com/users/mathieucarbou/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2016-12-13T23:08:54Z","updated_at":"2016-12-13T23:08:54Z","closed_at":null,"body":"branch: https://github.com/mathieucarbou/terracotta-platform/tree/issue-171\r\n\r\ntest: `HATest.failover()`\r\n\r\nTest content:\r\n\r\n```\r\n    // connect passive\r\n    stripeControl.startOneServer();\r\n    stripeControl.waitForRunningPassivesInStandby();\r\n[...]\r\n    // kill active - passive should take the active role\r\n    stripeControl.terminateActive();\r\n[...]\r\n```\r\n\r\nmain thread is blocking in tearDown(), before closing client's connection, we send a message to the management entity (`ManagementAgentService.pushNotification`).\r\n\r\nFull thread dump\r\n\r\n```\r\n\"main@1\" prio=5 tid=0x1 nid=NA waiting\r\n  java.lang.Thread.State: WAITING\r\n\t  at java.lang.Object.wait(Object.java:-1)\r\n\t  at java.lang.Object.wait(Object.java:502)\r\n\t  at org.terracotta.passthrough.PassthroughConnectionState.sendNormal(PassthroughConnectionState.java:53)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.invokeAndWait(PassthroughConnection.java:154)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.invokeActionAndWaitForAcks(PassthroughConnection.java:146)\r\n\t  at org.terracotta.passthrough.PassthroughInvocationBuilder.invoke(PassthroughInvocationBuilder.java:113)\r\n\t  at org.terracotta.voltron.proxy.client.VoltronProxyInvocationHandler.invoke(VoltronProxyInvocationHandler.java:103)\r\n\t  at com.sun.proxy.$Proxy18.pushNotification(Unknown Source:-1)\r\n\t  at org.terracotta.management.entity.management.client.ManagementAgentService.pushNotification(ManagementAgentService.java:202)\r\n\t  at org.terracotta.management.entity.sample.client.management.Management.close(Management.java:117)\r\n\t  at org.terracotta.management.entity.sample.client.CacheFactory.close(CacheFactory.java:96)\r\n\t  at org.terracotta.management.entity.sample.AbstractTest$$Lambda$78.1930903395.accept(Unknown Source:-1)\r\n\t  at java.util.ArrayList.forEach(ArrayList.java:1249)\r\n\t  at org.terracotta.management.entity.sample.AbstractTest.closeNodes(AbstractTest.java:170)\r\n\t  at org.terracotta.management.entity.sample.AbstractTest.tearDown(AbstractTest.java:130)\r\n\t  at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-1)\r\n\t  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\t  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\t  at java.lang.reflect.Method.invoke(Method.java:498)\r\n\t  at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)\r\n\t  at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\t  at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)\r\n\t  at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)\r\n\t  at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)\r\n\t  at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)\r\n\t  at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)\r\n\t  at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\r\n\t  at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\r\n\t  at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\r\n\t  at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\r\n\t  at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\r\n\t  at org.junit.runners.ParentRunner.run(ParentRunner.java:363)\r\n\t  at org.junit.runner.JUnitCore.run(JUnitCore.java:137)\r\n\t  at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)\r\n\t  at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)\r\n\t  at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:237)\r\n\t  at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)\r\n\r\n\"ManagementScheduler-2@2516\" daemon prio=5 tid=0x1d nid=NA waiting\r\n  java.lang.Thread.State: WAITING\r\n\t  at sun.misc.Unsafe.park(Unsafe.java:-1)\r\n\t  at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)\r\n\t  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)\r\n\t  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)\r\n\t  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)\r\n\t  at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)\r\n\t  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)\r\n\t  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\r\n\t  at java.lang.Thread.run(Thread.java:745)\r\n\r\n\"pool-7-thread-1@2375\" prio=5 tid=0x19 nid=NA waiting\r\n  java.lang.Thread.State: WAITING\r\n\t  at sun.misc.Unsafe.park(Unsafe.java:-1)\r\n\t  at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)\r\n\t  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)\r\n\t  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)\r\n\t  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)\r\n\t  at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)\r\n\t  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)\r\n\t  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\r\n\t  at java.lang.Thread.run(Thread.java:745)\r\n\r\n\"pool-5-thread-1@2295\" prio=5 tid=0x17 nid=NA waiting\r\n  java.lang.Thread.State: WAITING\r\n\t  at sun.misc.Unsafe.park(Unsafe.java:-1)\r\n\t  at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)\r\n\t  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)\r\n\t  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)\r\n\t  at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)\r\n\t  at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)\r\n\t  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)\r\n\t  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\r\n\t  at java.lang.Thread.run(Thread.java:745)\r\n\r\n\"Pseudo-connection 6@2497\" prio=5 tid=0x1a nid=NA waiting\r\n  java.lang.Thread.State: WAITING\r\n\t  at java.lang.Object.wait(Object.java:-1)\r\n\t  at java.lang.Object.wait(Object.java:502)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.getNextClientMessage(PassthroughConnection.java:222)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.handleNextMessage(PassthroughConnection.java:205)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.runClientThread(PassthroughConnection.java:199)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.access$000(PassthroughConnection.java:48)\r\n\t  at org.terracotta.passthrough.PassthroughConnection$1.run(PassthroughConnection.java:91)\r\n\t  at java.lang.Thread.run(Thread.java:745)\r\n\r\n\"Client connection 5@2374\" prio=5 tid=0x18 nid=NA waiting\r\n  java.lang.Thread.State: WAITING\r\n\t  at java.lang.Object.wait(Object.java:-1)\r\n\t  at java.lang.Object.wait(Object.java:502)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.getNextClientMessage(PassthroughConnection.java:222)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.handleNextMessage(PassthroughConnection.java:205)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.runClientThread(PassthroughConnection.java:199)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.access$000(PassthroughConnection.java:48)\r\n\t  at org.terracotta.passthrough.PassthroughConnection$1.run(PassthroughConnection.java:91)\r\n\t  at java.lang.Thread.run(Thread.java:745)\r\n\r\n\"Client connection 4@2293\" prio=5 tid=0x16 nid=NA waiting\r\n  java.lang.Thread.State: WAITING\r\n\t  at java.lang.Object.wait(Object.java:-1)\r\n\t  at java.lang.Object.wait(Object.java:502)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.getNextClientMessage(PassthroughConnection.java:222)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.handleNextMessage(PassthroughConnection.java:205)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.runClientThread(PassthroughConnection.java:199)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.access$000(PassthroughConnection.java:48)\r\n\t  at org.terracotta.passthrough.PassthroughConnection$1.run(PassthroughConnection.java:91)\r\n\t  at java.lang.Thread.run(Thread.java:745)\r\n\r\n\"Client connection 3@1993\" prio=5 tid=0x14 nid=NA waiting\r\n  java.lang.Thread.State: WAITING\r\n\t  at java.lang.Object.wait(Object.java:-1)\r\n\t  at java.lang.Object.wait(Object.java:502)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.getNextClientMessage(PassthroughConnection.java:222)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.handleNextMessage(PassthroughConnection.java:205)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.runClientThread(PassthroughConnection.java:199)\r\n\t  at org.terracotta.passthrough.PassthroughConnection.access$000(PassthroughConnection.java:48)\r\n\t  at org.terracotta.passthrough.PassthroughConnection$1.run(PassthroughConnection.java:91)\r\n\t  at java.lang.Thread.run(Thread.java:745)\r\n\r\n\"Thread-1@1725\" prio=5 tid=0xd nid=NA waiting\r\n  java.lang.Thread.State: WAITING\r\n\t  at java.lang.Object.wait(Object.java:-1)\r\n\t  at java.lang.Object.wait(Object.java:502)\r\n\t  at org.terracotta.passthrough.PassthroughServerCrasher.waitNextRequest(PassthroughServerCrasher.java:57)\r\n\t  at org.terracotta.passthrough.PassthroughServerCrasher$1.run(PassthroughServerCrasher.java:32)\r\n\r\n\"PassthroughTimerThread@2498\" prio=5 tid=0x1b nid=NA waiting\r\n  java.lang.Thread.State: WAITING\r\n\t  at java.lang.Object.wait(Object.java:-1)\r\n\t  at org.terracotta.passthrough.PassthroughTimerThread.run(PassthroughTimerThread.java:49)\r\n\r\n\"PassthroughTimerThread@1978\" prio=5 tid=0x12 nid=NA waiting\r\n  java.lang.Thread.State: WAITING\r\n\t  at java.lang.Object.wait(Object.java:-1)\r\n\t  at org.terracotta.passthrough.PassthroughTimerThread.run(PassthroughTimerThread.java:49)\r\n\r\n\"PassthroughTimerThread@1789\" prio=5 tid=0xf nid=NA waiting\r\n  java.lang.Thread.State: WAITING\r\n\t  at java.lang.Object.wait(Object.java:-1)\r\n\t  at org.terracotta.passthrough.PassthroughTimerThread.run(PassthroughTimerThread.java:49)\r\n\r\n\"Finalizer@2587\" daemon prio=8 tid=0x3 nid=NA waiting\r\n  java.lang.Thread.State: WAITING\r\n\t  at java.lang.Object.wait(Object.java:-1)\r\n\t  at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)\r\n\t  at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)\r\n\t  at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)\r\n\r\n\"Reference Handler@2588\" daemon prio=10 tid=0x2 nid=NA waiting\r\n  java.lang.Thread.State: WAITING\r\n\t  at java.lang.Object.wait(Object.java:-1)\r\n\t  at java.lang.Object.wait(Object.java:502)\r\n\t  at java.lang.ref.Reference.tryHandlePending(Reference.java:191)\r\n\t  at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)\r\n\r\n\"Signal Dispatcher@2586\" daemon prio=9 tid=0x4 nid=NA runnable\r\n  java.lang.Thread.State: RUNNABLE\r\n```\r\n\r\nIt is possible that this is a bug on our site, like #63, but I do not know if passthrough is hiding a stack trace. I do not see any stacktrace in the console at least."}}
{"actor":{"display_login":"mathieucarbou"}}