No description
Fixes an interesting "bug" in RandomRouter. Tests failed on my 12 core Linux box. After some investigation I found that it hanged randomly inside the SecureRandom seed generator. [JVM-Node4] "main" prio=10 tid=0x0000000001701000 nid=0x1942 runnable [0x00007fee631dc000] [JVM-Node4] java.lang.Thread.State: RUNNABLE [JVM-Node4] at java.io.FileInputStream.readBytes(Native Method) [JVM-Node4] at java.io.FileInputStream.read(FileInputStream.java:236) [JVM-Node4] at sun.security.provider.SeedGenerator$URLSeedGenerator.getSeedBytes(SeedGenerator.java:509) [JVM-Node4] at sun.security.provider.SeedGenerator.generateSeed(SeedGenerator.java:135) [JVM-Node4] at sun.security.provider.SecureRandom.engineGenerateSeed(SecureRandom.java:131) [JVM-Node4] at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:188) [JVM-Node4] - locked <0x00000007c3d84130> (a sun.security.provider.SecureRandom) [JVM-Node4] at java.security.SecureRandom.nextBytes(SecureRandom.java:450) [JVM-Node4] - locked <0x00000007c3d843d0> (a java.security.SecureRandom) [JVM-Node4] at java.security.SecureRandom.next(SecureRandom.java:472) [JVM-Node4] at java.util.Random.nextInt(Random.java:272) [JVM-Node4] at akka.routing.RandomLike$class.getNext$2(Routing.scala:466) Puzzled at first I Googled the problem and found this bug report: http://bugs.sun.com/view_bug.do?bug_id=6521844 In short it is designed to block on /dev/random (on Linux) when the entropy pool is empty until some "environmental noise is gathered". From the Linux manual: "Hanging at generateSeed is not a bug, since that's what was designed: When the entropy pool is empty, reads from /dev/random will block until additional environmental noise is gathered. (Source: Linux Programmer's Manual, section 4)" Fix was to switch to java.util.Random. Fun one Signed-off-by: Jonas Bonér <jonas@jonasboner.com> |
||
|---|---|---|
| akka-actor/src/main | ||
| akka-actor-migration/src/main/scala/akka | ||
| akka-actor-tests/src/test | ||
| akka-agent/src | ||
| akka-camel/src | ||
| akka-camel-typed/src | ||
| akka-cluster/src | ||
| akka-docs | ||
| akka-durable-mailboxes | ||
| akka-kernel/src/main | ||
| akka-remote/src | ||
| akka-samples | ||
| akka-sbt-plugin | ||
| akka-slf4j/src/main/scala/akka/event/slf4j | ||
| akka-spring/src | ||
| akka-testkit/src | ||
| akka-transactor/src | ||
| akka-tutorials/akka-tutorial-first | ||
| akka-zeromq/src | ||
| project | ||
| scripts | ||
| src/main/ls | ||
| .gitignore | ||
| build.sbt | ||
| LICENSE | ||
| README.textile | ||
h1. Akka We believe that writing correct concurrent, fault-tolerant and scalable applications is too hard. Most of the time it's because we are using the wrong tools and the wrong level of abstraction. Akka is here to change that. Using the Actor Model together with Software Transactional Memory we raise the abstraction level and provide a better platform to build correct concurrent and scalable applications. For fault-tolerance we adopt the "Let it crash":http://letitcrash.com model which have been used with great success in the telecom industry to build applications that self-heal, systems that never stop. Actors also provide the abstraction for transparent distribution and the basis for truly scalable and fault-tolerant applications. Akka is Open Source and available under the Apache 2 License. Learn more at "http://akka.io":http://akka.io.