Skip to content

Instantly share code, notes, and snippets.

@oschrenk
Created May 1, 2018 09:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oschrenk/2b56d3e23ba4da66ed70025c4d9dc044 to your computer and use it in GitHub Desktop.
Save oschrenk/2b56d3e23ba4da66ed70025c4d9dc044 to your computer and use it in GitHub Desktop.
akka {
http {
# see https://doc.akka.io/docs/akka-http/current/configuration.html for details
client {
// defaults to on
parsing {
illegal-header-warnings = off
// defaults to on
modeled-header-parsing = on
}
// defaults to 10
client.connecting-timeout = 5s
// defaults to 60s
idle-timeout = 20s
}
host-connection-pool {
// defaults to 4
max-connections = 8
// defaults to 5
max-retries = 3
// defaults to 32
max-open-requests = 64
// defaults to new
pool-implementation = new
}
}
}
expando {
network {
executor = "fork-join-executor"
fork-join-executor {
# Min number of threads to cap factor-based parallelism number to
parallelism-min = 2
# Parallelism (threads) ... ceil(available processors * factor)
parallelism-factor = 2.0
# Max number of threads to cap factor-based parallelism number to
parallelism-max = 10
}
}
parallelism = 32
timeout = 10s
source {
path = ${?EXPANDO_PATH}
encoding = "UTF-8"
encoding = ${?EXPANDO_ENCODING}
}
}
package com.oschrenk.expando
import akka.Done
import akka.actor.ActorSystem
import akka.dispatch.MessageDispatcher
import akka.http.scaladsl.Http
import akka.http.scaladsl.model._
import akka.http.scaladsl.model.headers.{Cookie, `Set-Cookie`}
import akka.stream.scaladsl.{Flow, Sink, Source}
import akka.stream.{ActorMaterializer, Materializer}
import scala.concurrent.{ExecutionContextExecutor, Future, TimeoutException}
import scala.io.{Source => FileSource}
import scala.util.{Failure, Success}
sealed trait ExpandedUri
case class NoRedirect(source: Uri) extends ExpandedUri
case class WithRedirect(source: Uri, target: Uri) extends ExpandedUri
case class Failed(source: Uri, error: String) extends ExpandedUri
object Expando {
def main(args: Array[String]): Unit = {
implicit val system: ActorSystem = ActorSystem()
implicit val materializer: ActorMaterializer = ActorMaterializer()
implicit val executionContext: MessageDispatcher = system.dispatchers.lookup("expando.network")
def request(url: Uri, cookie: Option[Cookie] = None): Future[Either[String, HttpResponse]] = {
timeout(Http()
.singleRequest(HttpRequest(
method = HttpMethods.GET,
uri = url,
headers = cookie.toList)))
.map(Right.apply)
.recover{ case e => Left(e.getMessage)}
}
def redirectOrResult(originalUrl: Uri, newLocation: Option[Uri], response: HttpResponse)(implicit materializer: Materializer): Future[Either[String, Uri]] = {
response.status match {
case StatusCodes.Found | StatusCodes.MovedPermanently | StatusCodes.SeeOther | StatusCodes.TemporaryRedirect ⇒
response.discardEntityBytes()
// deal with cookie protection schemes
val cookies = response.header[`Set-Cookie`].map(_.cookie).map(c => Cookie(c.name, c.value))
// deal with malformed location values containing whitespaces
val location = response.headers.find(h => h.lowercaseName().equals("location"))
.map (h => Uri.apply(h.value().replace(" ", "%20")))
// deal with relative urls in location value
val newUri = location match {
case Some(uri) if uri.isRelative =>
uri.resolvedAgainst(newLocation.getOrElse(originalUrl))
case Some(uri) =>
uri
case None =>
throw new IllegalArgumentException(s"empty location header on redirect for $originalUrl")
}
request(newUri, cookies).flatMap {
case Left(error) => Future.successful(Left(error))
case Right(res) => redirectOrResult(originalUrl, Some(newUri), res)
}
case _ ⇒
response.discardEntityBytes()
Future.successful(Right(newLocation.getOrElse(originalUrl)))
}
}
def timeout[T](f: Future[T]): Future[T] = {
import akka.pattern.after
val a = after(duration = Config.Timeout, using = system.scheduler)(Future.failed(new TimeoutException("Future timed out!")))
Future.firstCompletedOf(Seq(f, a))
}
def followRedirectOrResult(uri: Uri): Future[ExpandedUri] = {
request(uri)
.flatMap {
case Left(error) => Future.successful(Failed(uri, error))
case Right(res) =>
redirectOrResult(uri, None, res)
.recover{ case e => Left(e.getMessage)}
.map {
case Left(error) => Failed(uri, error)
case Right(newUri) => if (uri == newUri) NoRedirect(uri) else WithRedirect(uri, newUri)
}
}
}
val toUri: Flow[String, Uri, _] = Flow[String]
.map(Uri.apply)
val expandUri: Flow[Uri, ExpandedUri, _] = Flow[Uri]
.mapAsyncUnordered(Config.Parallelism)(followRedirectOrResult)
val printExpandedUri: Sink[ExpandedUri, Future[Done]] = Sink.foreach {
case NoRedirect(uri) =>
println(s"$uri 2xx $uri")
case WithRedirect(from, to) =>
println(s"$from 3xx $to")
case Failed(uri, error) =>
println(s"$uri 5xx $error")
}
val urlSource =
Source
.fromIterator(() => FileSource.fromFile(Config.Source.Path.get, Config.Source.Encoding).getLines())
urlSource
.via(toUri)
.via(expandUri)
.runWith(printExpandedUri)
.onComplete {
case Success(_) =>
println("http://i.am.done.com 200 http://i.am.done.com")
system.terminate()
case Failure(error) =>
println(s"http://i.am.broken.com 666 $error")
system.terminate()
}
}
}
2018-05-01 08:17:10
Full thread dump OpenJDK 64-Bit Server VM (25.171-b10 mixed mode):
"Attach Listener" #7141 daemon prio=9 os_prio=0 tid=0x00007f2258003300 nid=0x77ce waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"default-akka.actor.default-blocking-io-dispatcher-7131" #7140 prio=5 os_prio=0 tid=0x00007f223800a0b0 nid=0x778e waiting on condition [0x00007f222faf9000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c251b508> (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:1073)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"default-akka.actor.default-blocking-io-dispatcher-7130" #7139 prio=5 os_prio=0 tid=0x00007f223c03d110 nid=0x778d waiting on condition [0x00007f224c3dd000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c251b508> (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:1073)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"default-akka.actor.default-blocking-io-dispatcher-7129" #7138 prio=5 os_prio=0 tid=0x00007f22300b1790 nid=0x778c waiting on condition [0x00007f222efd2000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c251b508> (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:1073)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"default-akka.actor.default-blocking-io-dispatcher-7128" #7137 prio=5 os_prio=0 tid=0x00007f2234359250 nid=0x778b waiting on condition [0x00007f222f3d6000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c251b508> (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:1073)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"default-akka.actor.default-blocking-io-dispatcher-7127" #7136 prio=5 os_prio=0 tid=0x00007f22280cc520 nid=0x778a waiting on condition [0x00007f222f8f7000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c251b508> (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:1073)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"default-akka.actor.default-blocking-io-dispatcher-7126" #7135 prio=5 os_prio=0 tid=0x00000000024a8060 nid=0x7789 waiting on condition [0x00007f222fcfb000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c251b508> (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:1073)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"default-akka.actor.default-blocking-io-dispatcher-7125" #7134 prio=5 os_prio=0 tid=0x00007f22300a6ff0 nid=0x7788 waiting on condition [0x00007f222fdfc000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c251b508> (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:1073)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"default-akka.actor.default-blocking-io-dispatcher-7124" #7133 prio=5 os_prio=0 tid=0x00007f226403dad0 nid=0x7787 waiting on condition [0x00007f222f2d5000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c251b508> (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:1073)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"default-akka.actor.default-blocking-io-dispatcher-7123" #7132 prio=5 os_prio=0 tid=0x00000000024a6900 nid=0x7786 waiting on condition [0x00007f224c1db000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c251b508> (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:1073)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"default-expando.network-30" #39 prio=5 os_prio=0 tid=0x00007f224400d370 nid=0x5136 waiting on condition [0x00007f222e7ce000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c272f9c8> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
at akka.dispatch.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2075)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
"default-expando.network-29" #38 prio=5 os_prio=0 tid=0x00007f224017ba00 nid=0x5135 waiting on condition [0x00007f222e8cf000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c272f9c8> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
at akka.dispatch.forkjoin.ForkJoinPool.idleAwaitWork(ForkJoinPool.java:2135)
at akka.dispatch.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2067)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
"default-expando.network-28" #37 prio=5 os_prio=0 tid=0x00007f22342dad10 nid=0x5134 waiting on condition [0x00007f222ebd0000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c272f9c8> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
at akka.dispatch.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2075)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
"default-expando.network-27" #36 prio=5 os_prio=0 tid=0x00007f223c0479a0 nid=0x5133 waiting on condition [0x00007f222eed1000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c272f9c8> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
at akka.dispatch.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2075)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
"default-akka.io.pinned-dispatcher-10" #19 prio=5 os_prio=0 tid=0x00007f223c01e550 nid=0x5122 runnable [0x00007f224c6de000]
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 <0x00000000c2726058> (a sun.nio.ch.Util$3)
- locked <0x00000000c2726048> (a java.util.Collections$UnmodifiableSet)
- locked <0x00000000c2525658> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
at akka.io.SelectionHandler$ChannelRegistryImpl$$anon$3.tryRun(SelectionHandler.scala:128)
at akka.io.SelectionHandler$ChannelRegistryImpl$Task.run(SelectionHandler.scala:246)
at akka.io.SelectionHandler$ChannelRegistryImpl$$anon$3.run(SelectionHandler.scala:161)
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:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"default-akka.actor.default-dispatcher-9" #18 prio=5 os_prio=0 tid=0x00007f22342702b0 nid=0x5121 waiting on condition [0x00007f224c9df000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c22e5430> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
at akka.dispatch.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2075)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
"default-akka.actor.default-dispatcher-8" #17 prio=5 os_prio=0 tid=0x00007f2228007520 nid=0x5120 waiting on condition [0x00007f224cae0000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c22e5430> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
at akka.dispatch.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2075)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
"default-akka.actor.default-dispatcher-7" #16 prio=5 os_prio=0 tid=0x00007f2228006130 nid=0x511f waiting on condition [0x00007f224cbe1000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c22e5430> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
at akka.dispatch.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2075)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
"DestroyJavaVM" #15 prio=5 os_prio=0 tid=0x00007f22800094a0 nid=0x510e waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"default-akka.actor.default-dispatcher-6" #13 prio=5 os_prio=0 tid=0x00007f2234001050 nid=0x511e waiting on condition [0x00007f2269510000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c22e5430> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
at akka.dispatch.forkjoin.ForkJoinPool.idleAwaitWork(ForkJoinPool.java:2135)
at akka.dispatch.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2067)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
"default-akka.actor.default-dispatcher-5" #12 prio=5 os_prio=0 tid=0x00007f2230005d90 nid=0x511d waiting on condition [0x00007f2269611000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c22e5430> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
at akka.dispatch.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2075)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
"default-akka.actor.default-dispatcher-4" #11 prio=5 os_prio=0 tid=0x00007f22820afe60 nid=0x511c waiting on condition [0x00007f2269712000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c22e5430> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
at akka.dispatch.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2075)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
"default-akka.actor.default-dispatcher-3" #10 prio=5 os_prio=0 tid=0x00007f22820ace20 nid=0x511b waiting on condition [0x00007f2269813000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c22e5430> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
at akka.dispatch.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2075)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
"default-akka.actor.default-dispatcher-2" #9 prio=5 os_prio=0 tid=0x00007f2282091ba0 nid=0x511a waiting on condition [0x00007f2269914000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c22e5430> (a akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinPool)
at akka.dispatch.forkjoin.ForkJoinPool.scan(ForkJoinPool.java:2075)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
"default-scheduler-1" #8 prio=5 os_prio=0 tid=0x00007f2281fd4380 nid=0x5119 waiting on condition [0x00007f2269c15000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at akka.actor.LightArrayRevolverScheduler.waitNanos(LightArrayRevolverScheduler.scala:85)
at akka.actor.LightArrayRevolverScheduler$$anon$4.nextTick(LightArrayRevolverScheduler.scala:265)
at akka.actor.LightArrayRevolverScheduler$$anon$4.run(LightArrayRevolverScheduler.scala:235)
at java.lang.Thread.run(Thread.java:748)
"Service Thread" #7 daemon prio=9 os_prio=0 tid=0x00007f2280158240 nid=0x5117 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C1 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0x00007f228001b020 nid=0x5116 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0x00007f228013ef80 nid=0x5115 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0x00007f228013d5f0 nid=0x5114 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007f22801140e0 nid=0x5113 in Object.wait() [0x00007f22706f5000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
- locked <0x00000000c226b7c0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:212)
"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x00007f228010feb0 nid=0x5112 in Object.wait() [0x00007f22707f6000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
- locked <0x00000000c226b768> (a java.lang.ref.Reference$Lock)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)
"VM Thread" os_prio=0 tid=0x00007f2280106a00 nid=0x5111 runnable
"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f228001dec0 nid=0x510f runnable
"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f228001f450 nid=0x5110 runnable
"VM Periodic Task Thread" os_prio=0 tid=0x00007f228015a160 nid=0x5118 waiting on condition
JNI global references: 1419
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment