Created
May 1, 2018 09:39
-
-
Save oschrenk/2b56d3e23ba4da66ed70025c4d9dc044 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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