--
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ: http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to the Google Groups "Akka User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to akka-user+unsubscribe@googlegroups.com.
To post to this group, send email to akka...@googlegroups.com.
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.
Patrik Nordwall
Akka Tech Lead
Lightbend - Reactive apps on the JVM
Twitter: @patriknw
try breaker.withCircuitBreaker(asyncWriteMessages(prep))It seems that would be one of the logical protections to put in place for a fail fast approach to interacting with an external repository that doesn't return.
catch { case NonFatal(e) ⇒ Future.failed(e) }
To unsubscribe from this group and stop receiving emails from it, send an email to akka-user+...@googlegroups.com.
To post to this group, send email to akka...@googlegroups.com.
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.
I've done several thread dumps and the two dispatcher pools dealing with Cassandra have all their threads WAITING or TIMED_WAIT and based on their call stacks it appears they aren't doing any work like waiting for Cassandra to return unless I'm reading them wrong.
"manhattan-cassandra-plugin-default-dispatcher-42359" #47941 prio=5 os_prio=0 tid=0x00007f33e805c800 nid=0x3d35 waiting on condition [0x00007f336eec6000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000005c19a8e28> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
at scala.concurrent.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2075)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
"manhattan-cassandra-plugin-blocking-dispatcher-42441" #48090 prio=5 os_prio=0 tid=0x00007f33f016b000 nid=0x3e2e waiting on condition [0x00007f33805f5000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c37a33f0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1066)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
When I examine the memory dump and diver into EventSourced.scala I see that the journalBatch queue is full and the writeInProgress variable is set to TRUE so I know the Actor thinks a write is in progress. Correct me if I'm wrong but shouldn't a Cassandra write that takes more than 30 seconds set off the CircuitBreaker pattern in writeMessages inside the AsyncWriteJournal based on this code?try breaker.withCircuitBreaker(asyncWriteMessages(prep))It seems that would be one of the logical protections to put in place for a fail fast approach to interacting with an external repository that doesn't return.
catch { case NonFatal(e) ⇒ Future.failed(e) }
To unsubscribe from this group and stop receiving emails from it, send an email to akka-user+unsubscribe@googlegroups.com.
To post to this group, send email to akka...@googlegroups.com.
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.