Hi Endre, Thank you for the clarification.
The version of akka http is v2.0.3: http://mvnrepository.com/artifact/com.typesafe.akka/akka-http-experimental_2.10 I know it's a quite old version. We have to use it since our stack is based on scala 2.10. I have tried to create a project which is independent of our stack by using akka 2.4.2-rc2. It works. Still want to know why it does not work in akka http v2.0.3. BTW, any roadmap for akka 2.4.2 for scala 2.10 ? Thank you. On Friday, February 5, 2016 at 3:44:33 PM UTC+1, Hao Ren wrote: > > Thank you for your advice. > > Our stack is based on scala 2.10. That's why we have to use akka http > 2.0.3 which is the latest version for scala 2.10: > http://mvnrepository.com/artifact/com.typesafe.akka/akka-stream-experimental_2.10 > > Is there any build of akka http v2.4.2 is based scala 2.10 ? > > Thank you > > On Friday, February 5, 2016 at 2:49:35 PM UTC+1, √ wrote: >> >> Hi, are you using the latest RC of Akka 2.4.2? (If not, please do) >> >> That aside, please do not do >> this: entity.dataBytes.runWith(Sink.head).map(x => new String(x.toArray)) >> // not OK >> >> That String constructor should be banished, it uses the platform default >> character encoding, so it may work on some deployments and for others not. >> Also, creating a Byte-array from a ByteString allocates a new array (since >> the array is mutable) also a character encoding needs to be used when >> transcoding the bytes to a String. >> >> Recommendation, use byteString.decodeString(encoding): >> >> abstract defdecodeString(charset: String): String >> <http://doc.akka.io/api/akka/2.3.14/index.html#akka.util.ByteString@decodeString(charset:String):String> >> >> Decodes this ByteString using a charset to produce a String. >> >> >> On Fri, Feb 5, 2016 at 2:27 PM, Hao Ren <[email protected]> wrote: >> >>> Hi, >>> >>> I am using akka http to feed kafka via kafka-rest-proxy. >>> >>> The client code is simple. It just makes post requests at a rate given. >>> >>> Here is the code processing the response: >>> >>> val http = Http() >>> def postRequest(request: HttpRequest, index: Int): Future[String] = { >>> http.singleRequest(request) flatMap { >>> case HttpResponse(StatusCodes.OK, _, entity, _) => >>> entity.dataBytes.runWith(Sink.head).map(x => new String(x.toArray)) >>> // not OK >>> //entity.dataBytes.runWith(Sink.head).map(x => new String(x.toArray)) >>> // OK >>> case HttpResponse(statusCode, _, entity, _) => >>> entity.dataBytes.runWith(Sink.ignore) >>> Promise.failed(new >>> KafkaRestProxyException(statusCode.toString())).future >>> } >>> } >>> >>> >>> where the function `postRequest` is call a lot of times in a loop. >>> >>> When the message rate is low, everything is ok. >>> However, when the rate is high, it will process several messages at >>> first, and then akka http is stuck indefinitely. >>> It happens only when `Sink.head` is used. If I replace it by `Sink.last` >>> (or even Sink.ignore), everything is ok. >>> >>> It looks like back pressure is activated if `Sink.last` is not used to >>> force consumption of entities of all the responses. >>> What is strange is that the connexion stream has only element (one >>> response) to retrieve. It should not make difference between `Sink.last` >>> and `Sink.head` >>> >>> (jstack is in the end) >>> >>> Any help is highly appreciated ! >>> >>> Hao >>> >>> >>> ------------------------------------------------------------------------------------------------------------------------------------------------------------ >>> >>> Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.72-b15 mixed >>> mode): >>> >>> "Attach Listener" #34 daemon prio=9 os_prio=0 tid=0x00007fd5e4001000 >>> nid=0x4add waiting on condition [0x0000000000000000] >>> java.lang.Thread.State: RUNNABLE >>> >>> "DestroyJavaVM" #33 prio=5 os_prio=0 tid=0x00007fd628014000 nid=0x49d1 >>> waiting on condition [0x0000000000000000] >>> java.lang.Thread.State: RUNNABLE >>> >>> "ForkJoinPool-2-worker-7" #31 daemon prio=5 os_prio=0 >>> tid=0x00007fd58c004800 nid=0x4a11 waiting on condition [0x00007fd60c66d000] >>> java.lang.Thread.State: TIMED_WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x0000000775603f20> (a >>> scala.concurrent.forkjoin.ForkJoinPool) >>> at >>> scala.concurrent.forkjoin.ForkJoinPool.idleAwaitWork(ForkJoinPool.java:2135) >>> at scala.concurrent.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2067) >>> at >>> scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) >>> at >>> scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) >>> >>> "ForkJoinPool-2-worker-1" #30 daemon prio=5 os_prio=0 >>> tid=0x0000000001a31800 nid=0x4a0f waiting on condition [0x00007fd60c76e000] >>> java.lang.Thread.State: WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x0000000775603f20> (a >>> scala.concurrent.forkjoin.ForkJoinPool) >>> 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) >>> >>> "default-akka.actor.default-dispatcher-14" #27 prio=5 os_prio=0 >>> tid=0x00007fd5bc072800 nid=0x4a0c waiting on condition [0x00007fd60cc71000] >>> java.lang.Thread.State: WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x00000006c681ae68> (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) >>> >>> "default-akka.actor.default-dispatcher-13" #26 prio=5 os_prio=0 >>> tid=0x00007fd59c002800 nid=0x4a0b waiting on condition [0x00007fd60cd72000] >>> java.lang.Thread.State: WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x00000006c681ae68> (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) >>> >>> "default-akka.actor.default-dispatcher-12" #25 prio=5 os_prio=0 >>> tid=0x00007fd5c4033000 nid=0x4a0a waiting on condition [0x00007fd60ce73000] >>> java.lang.Thread.State: WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x00000006c681ae68> (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) >>> >>> "default-akka.actor.default-dispatcher-11" #24 prio=5 os_prio=0 >>> tid=0x00007fd5c4031800 nid=0x4a09 waiting on condition [0x00007fd60cf74000] >>> java.lang.Thread.State: WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x00000006c681ae68> (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) >>> >>> "default-akka.actor.default-dispatcher-10" #23 prio=5 os_prio=0 >>> tid=0x00007fd5a4002000 nid=0x4a08 waiting on condition [0x00007fd60d075000] >>> java.lang.Thread.State: WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x00000006c681ae68> (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) >>> >>> "default-akka.actor.default-dispatcher-9" #22 prio=5 os_prio=0 >>> tid=0x00007fd5c0004000 nid=0x4a07 waiting on condition [0x00007fd60d176000] >>> java.lang.Thread.State: WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x00000006c681ae68> (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) >>> >>> "default-akka.actor.default-dispatcher-8" #21 prio=5 os_prio=0 >>> tid=0x00007fd5c0001000 nid=0x4a06 waiting on condition [0x00007fd60d277000] >>> java.lang.Thread.State: WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x00000006c681ae68> (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) >>> >>> "default-akka.io.pinned-dispatcher-7" #20 prio=5 os_prio=0 >>> tid=0x00007fd5c401f000 nid=0x4a05 runnable [0x00007fd60d377000] >>> java.lang.Thread.State: RUNNABLE >>> at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) >>> at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269) >>> at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93) >>> at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86) >>> - locked <0x000000076d24e548> (a sun.nio.ch.Util$2) >>> - locked <0x000000076d24e4c0> (a java.util.Collections$UnmodifiableSet) >>> - locked <0x000000076d24e340> (a sun.nio.ch.EPollSelectorImpl) >>> at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97) >>> at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:101) >>> at >>> akka.io.SelectionHandler$ChannelRegistryImpl$$anon$3.tryRun(SelectionHandler.scala:114) >>> at >>> akka.io.SelectionHandler$ChannelRegistryImpl$Task.run(SelectionHandler.scala:215) >>> at >>> akka.io.SelectionHandler$ChannelRegistryImpl$$anon$3.run(SelectionHandler.scala:147) >>> at >>> akka.util.SerializedSuspendableExecutionContext.run$1(SerializedSuspendableExecutionContext.scala:68) >>> at >>> akka.util.SerializedSuspendableExecutionContext.run(SerializedSuspendableExecutionContext.scala:72) >>> at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40) >>> 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:745) >>> >>> "metrics-meter-tick-thread-2" #19 daemon prio=5 os_prio=0 >>> tid=0x00007fd628fbb000 nid=0x4a04 waiting on condition [0x00007fd60e0fd000] >>> java.lang.Thread.State: WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x00000006c6803b58> (a >>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) >>> at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) >>> at >>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088) >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) >>> at >>> java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) >>> 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) >>> >>> "metrics-meter-tick-thread-1" #18 daemon prio=5 os_prio=0 >>> tid=0x00007fd628f61000 nid=0x4a02 waiting on condition [0x00007fd60e3fe000] >>> java.lang.Thread.State: TIMED_WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x00000006c6803b58> (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.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093) >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) >>> at >>> java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) >>> 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) >>> >>> "default-akka.actor.default-dispatcher-5" #14 prio=5 os_prio=0 >>> tid=0x00007fd5c8001000 nid=0x49f4 waiting on condition [0x00007fd60ec1a000] >>> java.lang.Thread.State: WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x00000006c681ae68> (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) >>> >>> "default-akka.actor.default-dispatcher-4" #13 prio=5 os_prio=0 >>> tid=0x00007fd5c4001000 nid=0x49f3 waiting on condition [0x00007fd60ed1b000] >>> java.lang.Thread.State: WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x00000006c681ae68> (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) >>> >>> "default-akka.actor.default-dispatcher-3" #12 prio=5 os_prio=0 >>> tid=0x00007fd628e46800 nid=0x49f2 waiting on condition [0x00007fd60ee1c000] >>> java.lang.Thread.State: TIMED_WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x00000006c681ae68> (a >>> akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool) >>> at >>> scala.concurrent.forkjoin.ForkJoinPool.idleAwaitWork(ForkJoinPool.java:2135) >>> at scala.concurrent.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2067) >>> at >>> scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) >>> at >>> scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) >>> >>> "default-akka.actor.default-dispatcher-2" #11 prio=5 os_prio=0 >>> tid=0x00007fd628e34000 nid=0x49f1 waiting on condition [0x00007fd60f11d000] >>> java.lang.Thread.State: WAITING (parking) >>> at sun.misc.Unsafe.park(Native Method) >>> - parking to wait for <0x00000006c681ae68> (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) >>> >>> "default-scheduler-1" #10 prio=5 os_prio=0 tid=0x00007fd628da2000 >>> nid=0x49f0 waiting on condition [0x00007fd60f21e000] >>> java.lang.Thread.State: TIMED_WAITING (sleeping) >>> at java.lang.Thread.sleep(Native Method) >>> at akka.actor.LightArrayRevolverScheduler.waitNanos(Scheduler.scala:226) >>> at >>> akka.actor.LightArrayRevolverScheduler$$anon$8.nextTick(Scheduler.scala:405) >>> at >>> akka.actor.LightArrayRevolverScheduler$$anon$8.run(Scheduler.scala:375) >>> at java.lang.Thread.run(Thread.java:745) >>> >>> "Monitor Ctrl-Break" #9 daemon prio=5 os_prio=0 tid=0x00007fd628b31000 >>> nid=0x49ee runnable [0x00007fd60f736000] >>> java.lang.Thread.State: RUNNABLE >>> at java.net.PlainSocketImpl.socketAccept(Native Method) >>> at java.net >>> .AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409) >>> at java.net.ServerSocket.implAccept(ServerSocket.java:545) >>> at java.net.ServerSocket.accept(ServerSocket.java:513) >>> at com.intellij.rt.execution.application.AppMain$1.run(AppMain.java:90) >>> at java.lang.Thread.run(Thread.java:745) >>> >>> "Service Thread" #8 daemon prio=9 os_prio=0 tid=0x00007fd6280d3000 >>> nid=0x49dd runnable [0x0000000000000000] >>> java.lang.Thread.State: RUNNABLE >>> >>> "C1 CompilerThread2" #7 daemon prio=9 os_prio=0 tid=0x00007fd6280c8000 >>> nid=0x49dc waiting on condition [0x0000000000000000] >>> java.lang.Thread.State: RUNNABLE >>> >>> "C2 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0x00007fd6280c6000 >>> nid=0x49db waiting on condition [0x0000000000000000] >>> java.lang.Thread.State: RUNNABLE >>> >>> "C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0x00007fd6280c3000 >>> nid=0x49da waiting on condition [0x0000000000000000] >>> java.lang.Thread.State: RUNNABLE >>> >>> "Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0x00007fd6280c1800 >>> nid=0x49d9 runnable [0x0000000000000000] >>> java.lang.Thread.State: RUNNABLE >>> >>> "Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007fd62808e800 nid=0x49d8 >>> in Object.wait() [0x00007fd615094000] >>> java.lang.Thread.State: WAITING (on object monitor) >>> at java.lang.Object.wait(Native Method) >>> - waiting on <0x00000006c68138d0> (a java.lang.ref.ReferenceQueue$Lock) >>> at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) >>> - locked <0x00000006c68138d0> (a java.lang.ref.ReferenceQueue$Lock) >>> at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) >>> at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209) >>> >>> "Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x00007fd628089800 >>> nid=0x49d7 in Object.wait() [0x00007fd615195000] >>> java.lang.Thread.State: WAITING (on object monitor) >>> at java.lang.Object.wait(Native Method) >>> - waiting on <0x00000006c680ad40> (a java.lang.ref.Reference$Lock) >>> at java.lang.Object.wait(Object.java:502) >>> at java.lang.ref.Reference.tryHandlePending(Reference.java:191) >>> - locked <0x00000006c680ad40> (a java.lang.ref.Reference$Lock) >>> at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153) >>> >>> "VM Thread" os_prio=0 tid=0x00007fd628082000 nid=0x49d6 runnable >>> >>> "GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007fd628029800 >>> nid=0x49d2 runnable >>> >>> "GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007fd62802b000 >>> nid=0x49d3 runnable >>> >>> "GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007fd62802d000 >>> nid=0x49d4 runnable >>> >>> "GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007fd62802e800 >>> nid=0x49d5 runnable >>> >>> "VM Periodic Task Thread" os_prio=0 tid=0x00007fd6280d6000 nid=0x49de >>> waiting on condition >>> >>> JNI global references: 310 >>> >>> -- >>> >>>>>>>>>> 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 [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at https://groups.google.com/group/akka-user. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> Cheers, >> √ >> > -- >>>>>>>>>> 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/akka-user. For more options, visit https://groups.google.com/d/optout.
