No description
Find a file
Jonas Bonér ec7772b786 Fixes bug in RandomRouter.
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>
2012-02-03 14:56:50 +01:00
akka-actor/src/main Fixes bug in RandomRouter. 2012-02-03 14:56:50 +01:00
akka-actor-migration/src/main/scala/akka Removing dead imports in akka-migration 2012-01-25 15:42:29 +01:00
akka-actor-tests/src/test FSM: remove Ev extractor and move -> into companion object, see #1759 2012-01-31 21:48:24 +01:00
akka-agent/src Merge branch 'master' into wip-1581-patterns-ask 2012-01-20 19:29:17 +01:00
akka-camel/src Updating Copyright as per #1660 2012-01-19 18:21:06 +01:00
akka-camel-typed/src Updating Copyright as per #1660 2012-01-19 18:21:06 +01:00
akka-cluster/src Cleaned up AccrualFailureDetectorSpec after changing order of arguments in AccrualFailureDetector 2012-01-31 15:48:01 +01:00
akka-docs Merge branch 'master' of github.com:jboner/akka 2012-02-01 11:46:57 +01:00
akka-durable-mailboxes remote cleanup: include feedback from Viktor and Patrik 2012-01-30 11:57:24 +01:00
akka-kernel/src/main Config dir first in classpath. See #1761 2012-02-01 08:49:31 +01:00
akka-remote/src Fixes bug in RandomRouter. 2012-02-03 14:56:50 +01:00
akka-samples code style touch up of FSM.scala 2012-01-24 09:35:00 +01:00
akka-sbt-plugin converted tabs to spaces 2012-01-31 15:50:06 +01:00
akka-slf4j/src/main/scala/akka/event/slf4j Updating Copyright as per #1660 2012-01-19 18:21:06 +01:00
akka-spring/src Merged with current master 2011-12-13 10:18:15 +01:00
akka-testkit/src Not a running junit test, only verifies compilation 2012-02-01 11:53:46 +01:00
akka-transactor/src converted tabs to spaces 2012-01-31 15:50:06 +01:00
akka-tutorials/akka-tutorial-first Added name of the listener actor in pi sample 2012-01-30 07:44:38 +01:00
akka-zeromq/src ZeroMQ module's ConcurrentSocketActorSpec fails. 2012-01-30 16:55:03 +01:00
project Moved Gossiper, FailureDetector and VectorClock (with tests) to the akka-cluster module. Deleted all old unused cluster code (ZooKeeper-based stuff). 2012-01-31 13:34:06 +01:00
scripts Config dir first in classpath. See #1761 2012-02-01 08:49:31 +01:00
src/main/ls Added JSON file for ls.implicit.ly 2011-12-05 11:14:05 +01:00
.gitignore Integrate schoir for distributed testing. 2012-01-12 12:47:11 +04:00
build.sbt Added initial support for ls.implicit.ly to the build, still need more work though 2011-11-29 16:40:39 +01:00
LICENSE Updating copyright section to Typesafe Inc. etc 2011-07-14 16:03:08 +02:00
README.textile Changed URI to akka.io 2011-01-05 05:32:59 -08:00

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.