diff --git a/.gitignore b/.gitignore index d44d7ea405..7fa5190d1f 100755 --- a/.gitignore +++ b/.gitignore @@ -49,7 +49,8 @@ multiverse.log .eprj .*.swp akka-docs/_build/ -akka-docs/epilog_rst +akka-docs/rst_html +akka-docs/rst_latex *.pyc akka-docs/exts/ _akka_cluster/ diff --git a/akka-actor-tests/src/test/java/akka/actor/JavaAPITestActor.java b/akka-actor-tests/src/test/java/akka/actor/JavaAPITestActor.java index f8e9d1c3ee..e84f45f885 100644 --- a/akka-actor-tests/src/test/java/akka/actor/JavaAPITestActor.java +++ b/akka-actor-tests/src/test/java/akka/actor/JavaAPITestActor.java @@ -2,7 +2,7 @@ package akka.actor; public class JavaAPITestActor extends UntypedActor { public void onReceive(Object msg) { - getSender().tell("got it!"); + getSender().tell("got it!", getSelf()); getContext().getChildren(); } } diff --git a/akka-actor-tests/src/test/java/akka/actor/NonPublicClass.java b/akka-actor-tests/src/test/java/akka/actor/NonPublicClass.java index 850d82cd62..047492e00f 100644 --- a/akka-actor-tests/src/test/java/akka/actor/NonPublicClass.java +++ b/akka-actor-tests/src/test/java/akka/actor/NonPublicClass.java @@ -12,6 +12,6 @@ public class NonPublicClass { class MyNonPublicActorClass extends UntypedActor { @Override public void onReceive(Object msg) { - getSender().tell(msg); + getSender().tell(msg, getSelf()); } } \ No newline at end of file diff --git a/akka-actor-tests/src/test/java/akka/actor/StashJavaAPI.java b/akka-actor-tests/src/test/java/akka/actor/StashJavaAPI.java index 50df3d0a6b..3c17f2fe45 100644 --- a/akka-actor-tests/src/test/java/akka/actor/StashJavaAPI.java +++ b/akka-actor-tests/src/test/java/akka/actor/StashJavaAPI.java @@ -1,36 +1,34 @@ package akka.actor; -import akka.actor.ActorSystem; -import akka.japi.Creator; -import akka.testkit.AkkaSpec; -import com.typesafe.config.ConfigFactory; - import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; -import static org.junit.Assert.*; + +import com.typesafe.config.ConfigFactory; public class StashJavaAPI { - private static ActorSystem system; + private static ActorSystem system; - @BeforeClass - public static void beforeAll() { - system = ActorSystem.create("StashJavaAPI", ConfigFactory.parseString(ActorWithStashSpec.testConf())); - } + @BeforeClass + public static void beforeAll() { + system = ActorSystem.create("StashJavaAPI", + ConfigFactory.parseString(ActorWithStashSpec.testConf())); + } - @AfterClass - public static void afterAll() { - system.shutdown(); - system = null; - } + @AfterClass + public static void afterAll() { + system.shutdown(); + system = null; + } - @Test - public void mustBeAbleToUseStash() { - ActorRef ref = system.actorOf(new Props(StashJavaAPITestActor.class).withDispatcher("my-dispatcher")); - ref.tell("Hello", ref); - ref.tell("Hello", ref); - ref.tell(new Object()); - } + @Test + public void mustBeAbleToUseStash() { + ActorRef ref = system.actorOf(new Props(StashJavaAPITestActor.class) + .withDispatcher("my-dispatcher")); + ref.tell("Hello", ref); + ref.tell("Hello", ref); + ref.tell(new Object(), null); + } } diff --git a/akka-actor-tests/src/test/java/akka/actor/StashJavaAPITestActor.java b/akka-actor-tests/src/test/java/akka/actor/StashJavaAPITestActor.java index 8bc1bcc0d6..5d12f5d8e2 100644 --- a/akka-actor-tests/src/test/java/akka/actor/StashJavaAPITestActor.java +++ b/akka-actor-tests/src/test/java/akka/actor/StashJavaAPITestActor.java @@ -3,21 +3,22 @@ package akka.actor; import static org.junit.Assert.*; public class StashJavaAPITestActor extends UntypedActorWithStash { - int count = 0; - public void onReceive(Object msg) { - if (msg instanceof String) { - if (count < 0) { - getSender().tell(new Integer(((String) msg).length())); - } else if (count == 2) { - count = -1; - unstashAll(); - } else { - count += 1; - stash(); - } - } else if (msg instanceof Integer) { - int value = ((Integer) msg).intValue(); - assertEquals(value, 5); - } + int count = 0; + + public void onReceive(Object msg) { + if (msg instanceof String) { + if (count < 0) { + getSender().tell(new Integer(((String) msg).length()), getSelf()); + } else if (count == 2) { + count = -1; + unstashAll(); + } else { + count += 1; + stash(); + } + } else if (msg instanceof Integer) { + int value = ((Integer) msg).intValue(); + assertEquals(value, 5); } + } } diff --git a/akka-actor-tests/src/test/java/akka/routing/CustomRouteTest.java b/akka-actor-tests/src/test/java/akka/routing/CustomRouteTest.java index dc92ace228..d47c49e28d 100644 --- a/akka-actor-tests/src/test/java/akka/routing/CustomRouteTest.java +++ b/akka-actor-tests/src/test/java/akka/routing/CustomRouteTest.java @@ -3,14 +3,9 @@ */ package akka.routing; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Props; -import akka.routing.RoundRobinRouter; import akka.testkit.ExtractRoute; public class CustomRouteTest { diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorRefSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorRefSpec.scala index a95e2d84b8..ae956e968a 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorRefSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorRefSpec.scala @@ -371,8 +371,8 @@ class ActorRefSpec extends AkkaSpec with DefaultTimeout { val timeout = Timeout(20000) val ref = system.actorOf(Props(new Actor { def receive = { - case 5 ⇒ sender.tell("five") - case 0 ⇒ sender.tell("null") + case 5 ⇒ sender ! "five" + case 0 ⇒ sender ! "null" } })) diff --git a/akka-actor-tests/src/test/scala/akka/actor/ConsistencySpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ConsistencySpec.scala index 8dbd9f6b4f..dbba376054 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ConsistencySpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ConsistencySpec.scala @@ -32,7 +32,7 @@ object ConsistencySpec { case step: Long ⇒ if (lastStep != (step - 1)) - sender.tell("Test failed: Last step %s, this step %s".format(lastStep, step)) + sender ! "Test failed: Last step %s, this step %s".format(lastStep, step) var shouldBeFortyTwo = left.value + right.value if (shouldBeFortyTwo != 42) diff --git a/akka-actor-tests/src/test/scala/akka/actor/Ticket669Spec.scala b/akka-actor-tests/src/test/scala/akka/actor/Ticket669Spec.scala index e6ac2a13f3..6c96ae28a8 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/Ticket669Spec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/Ticket669Spec.scala @@ -59,11 +59,11 @@ object Ticket669Spec { } override def preRestart(reason: scala.Throwable, msg: Option[Any]) { - sender.tell("failure1") + sender ! "failure1" } override def postStop() { - sender.tell("failure2") + sender ! "failure2" } } } diff --git a/akka-actor-tests/src/test/scala/akka/actor/dispatch/ActorModelSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/dispatch/ActorModelSpec.scala index 3a3371ad51..d67acd9ac1 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/dispatch/ActorModelSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/dispatch/ActorModelSpec.scala @@ -86,7 +86,7 @@ object ActorModelSpec { case Wait(time) ⇒ ack; Thread.sleep(time); busy.switchOff() case WaitAck(time, l) ⇒ ack; Thread.sleep(time); l.countDown(); busy.switchOff() case Reply(msg) ⇒ ack; sender ! msg; busy.switchOff() - case TryReply(msg) ⇒ ack; sender.tell(msg); busy.switchOff() + case TryReply(msg) ⇒ ack; sender.tell(msg, null); busy.switchOff() case Forward(to, msg) ⇒ ack; to.forward(msg); busy.switchOff() case CountDown(latch) ⇒ ack; latch.countDown(); busy.switchOff() case Increment(count) ⇒ ack; count.incrementAndGet(); busy.switchOff() diff --git a/akka-actor-tests/src/test/scala/akka/dispatch/PriorityDispatcherSpec.scala b/akka-actor-tests/src/test/scala/akka/dispatch/PriorityDispatcherSpec.scala index a1de1f84bd..58a785ccf3 100644 --- a/akka-actor-tests/src/test/scala/akka/dispatch/PriorityDispatcherSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/dispatch/PriorityDispatcherSpec.scala @@ -56,7 +56,7 @@ class PriorityDispatcherSpec extends AkkaSpec(PriorityDispatcherSpec.config) wit def receive = { case i: Int ⇒ acc = i :: acc - case 'Result ⇒ sender.tell(acc) + case 'Result ⇒ sender ! acc } }).withDispatcher(dispatcherKey)).asInstanceOf[InternalActorRef] diff --git a/akka-actor-tests/src/test/scala/akka/routing/RoutingSpec.scala b/akka-actor-tests/src/test/scala/akka/routing/RoutingSpec.scala index 2d4f2245f1..b066c63ab9 100644 --- a/akka-actor-tests/src/test/scala/akka/routing/RoutingSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/routing/RoutingSpec.scala @@ -535,7 +535,7 @@ class RoutingSpec extends AkkaSpec(RoutingSpec.config) with DefaultTimeout with case _id: Int if (_id == id) ⇒ case x ⇒ { Thread sleep 100 * id - sender.tell(id) + sender ! id } } diff --git a/akka-actor/src/main/java/akka/dispatch/AbstractMessageDispatcher.java b/akka-actor/src/main/java/akka/dispatch/AbstractMessageDispatcher.java index c701931edc..183812428e 100644 --- a/akka-actor/src/main/java/akka/dispatch/AbstractMessageDispatcher.java +++ b/akka-actor/src/main/java/akka/dispatch/AbstractMessageDispatcher.java @@ -6,9 +6,6 @@ package akka.dispatch; import akka.util.Unsafe; -import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; -import java.util.concurrent.atomic.AtomicLongFieldUpdater; - abstract class AbstractMessageDispatcher { final static long shutdownScheduleOffset; final static long inhabitantsOffset; diff --git a/akka-actor/src/main/scala/akka/actor/ActorCell.scala b/akka-actor/src/main/scala/akka/actor/ActorCell.scala index 2c12dae8e4..504ec5f762 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorCell.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorCell.scala @@ -504,7 +504,7 @@ private[akka] class ActorCell( if (success) true else { val parent: Class[_] = clazz.getSuperclass - if (parent eq null) throw new IllegalActorStateException(toString + " is not an Actor since it have not mixed in the 'Actor' trait") + if (parent eq null) throw new IllegalActorStateException(actorInstance.getClass + " is not an Actor since it have not mixed in the 'Actor' trait") lookupAndSetField(parent, actor, name, value) } } diff --git a/akka-actor/src/main/scala/akka/actor/ActorRef.scala b/akka-actor/src/main/scala/akka/actor/ActorRef.scala index c5e49ece70..615c4ef92e 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorRef.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorRef.scala @@ -92,13 +92,14 @@ abstract class ActorRef extends java.lang.Comparable[ActorRef] with Serializable * actor.tell(message); * */ + @deprecated("use the two-arg variant (typically getSelf() as second arg)", "2.1") final def tell(msg: Any): Unit = this.!(msg)(null: ActorRef) /** * Java API.

* Sends the specified message to the sender, i.e. fire-and-forget - * semantics, including the sender reference if possible (not supported on - * all senders).

+ * semantics, including the sender reference if possible (pass `null` if + * there is nobody to reply to).

*

    * actor.tell(message, context);
    * 
diff --git a/akka-actor/src/main/scala/akka/actor/RepointableActorRef.scala b/akka-actor/src/main/scala/akka/actor/RepointableActorRef.scala index 8ca8ab5cb7..7bbc5517d8 100644 --- a/akka-actor/src/main/scala/akka/actor/RepointableActorRef.scala +++ b/akka-actor/src/main/scala/akka/actor/RepointableActorRef.scala @@ -195,7 +195,7 @@ private[akka] class UnstartedCell(val systemImpl: ActorSystemImpl, val self: Rep lock.unlock() } } else { - system.deadLetters.tell(DeadLetter(message, sender, self)) + system.deadLetters ! DeadLetter(message, sender, self) } } def sendSystemMessage(msg: SystemMessage): Unit = { @@ -209,7 +209,7 @@ private[akka] class UnstartedCell(val systemImpl: ActorSystemImpl, val self: Rep } else { // FIXME: once we have guaranteed delivery of system messages, hook this in! system.eventStream.publish(Warning(self.path.toString, getClass, "dropping system message " + msg + " due to lock timeout")) - system.deadLetters.tell(DeadLetter(msg, self, self)) + system.deadLetters ! DeadLetter(msg, self, self) } } def isLocal = true diff --git a/akka-actor/src/main/scala/akka/actor/dungeon/Dispatch.scala b/akka-actor/src/main/scala/akka/actor/dungeon/Dispatch.scala index e071c1605d..1b9476acb1 100644 --- a/akka-actor/src/main/scala/akka/actor/dungeon/Dispatch.scala +++ b/akka-actor/src/main/scala/akka/actor/dungeon/Dispatch.scala @@ -57,7 +57,7 @@ private[akka] trait Dispatch { this: ActorCell ⇒ if (sendSupervise) { // ➡➡➡ NEVER SEND THE SAME SYSTEM MESSAGE OBJECT TO TWO ACTORS ⬅⬅⬅ parent.sendSystemMessage(akka.dispatch.Supervise(self, uid)) - parent.tell(NullMessage) // read ScalaDoc of NullMessage to see why + parent ! NullMessage // read ScalaDoc of NullMessage to see why } // This call is expected to start off the actor by scheduling its mailbox. diff --git a/akka-actor/src/main/scala/akka/actor/dungeon/FaultHandling.scala b/akka-actor/src/main/scala/akka/actor/dungeon/FaultHandling.scala index f7c06032c8..a42d15c6f5 100644 --- a/akka-actor/src/main/scala/akka/actor/dungeon/FaultHandling.scala +++ b/akka-actor/src/main/scala/akka/actor/dungeon/FaultHandling.scala @@ -194,7 +194,7 @@ private[akka] trait FaultHandling { this: ActorCell ⇒ try if (a ne null) a.postStop() finally try dispatcher.detach(this) finally try parent.sendSystemMessage(ChildTerminated(self)) - finally try parent.tell(NullMessage) // read ScalaDoc of NullMessage to see why + finally try parent ! NullMessage // read ScalaDoc of NullMessage to see why finally try tellWatchersWeDied(a) finally try unwatchWatchedActors(a) finally { diff --git a/akka-actor/src/main/scala/akka/pattern/AskSupport.scala b/akka-actor/src/main/scala/akka/pattern/AskSupport.scala index 7e3c3ce14d..92e34a2294 100644 --- a/akka-actor/src/main/scala/akka/pattern/AskSupport.scala +++ b/akka-actor/src/main/scala/akka/pattern/AskSupport.scala @@ -75,7 +75,7 @@ trait AskSupport { */ def ask(actorRef: ActorRef, message: Any)(implicit timeout: Timeout): Future[Any] = actorRef match { case ref: InternalActorRef if ref.isTerminated ⇒ - actorRef.tell(message) + actorRef ! message Future.failed[Any](new AskTimeoutException("Recipient[%s] had already been terminated." format actorRef)) case ref: InternalActorRef ⇒ if (timeout.duration.length <= 0) Future.failed[Any](new IllegalArgumentException("Timeout length for an `ask` must be greater or equal to 1. Question not sent to [%s]" format actorRef)) diff --git a/akka-agent/src/main/scala/akka/agent/Agent.scala b/akka-agent/src/main/scala/akka/agent/Agent.scala index 5b786b2599..f85fdfc4ed 100644 --- a/akka-agent/src/main/scala/akka/agent/Agent.scala +++ b/akka-agent/src/main/scala/akka/agent/Agent.scala @@ -9,9 +9,8 @@ import akka.japi.{ Function ⇒ JFunc, Procedure ⇒ JProc } import akka.pattern.ask import akka.util.Timeout import scala.concurrent.stm._ -import concurrent.{ ExecutionContext, Future, Promise, Await } -import concurrent.util.Duration -import scala.concurrent.util.FiniteDuration +import scala.concurrent.{ ExecutionContext, Future, Promise, Await } +import scala.concurrent.util.{ FiniteDuration, Duration } /** * Used internally to send functions. diff --git a/akka-camel/src/test/java/akka/camel/ConsumerJavaTestBase.java b/akka-camel/src/test/java/akka/camel/ConsumerJavaTestBase.java index e1e87f8903..466f213092 100644 --- a/akka-camel/src/test/java/akka/camel/ConsumerJavaTestBase.java +++ b/akka-camel/src/test/java/akka/camel/ConsumerJavaTestBase.java @@ -21,39 +21,42 @@ import akka.actor.Props; import akka.testkit.AkkaSpec; import akka.testkit.JavaTestKit; - /** * @author Martin Krasser */ public class ConsumerJavaTestBase { - static ActorSystem system = ActorSystem.create("test", AkkaSpec.testConf()); + static ActorSystem system = ActorSystem.create("test", AkkaSpec.testConf()); - @AfterClass - public static void tearDownAfterClass() { - system.shutdown(); - } + @AfterClass + public static void tearDownAfterClass() { + system.shutdown(); + } - @Test - public void shouldHandleExceptionThrownByActorAndGenerateCustomResponse() throws Exception { - new JavaTestKit(system) {{ - String result = new EventFilter(Exception.class) { - protected String run() { - FiniteDuration timeout = Duration.create(1, TimeUnit.SECONDS); - Camel camel = CamelExtension.get(system); - ExecutionContext executionContext = system.dispatcher(); - try { - ActorRef ref = Await.result( - camel.activationFutureFor(system.actorOf(new Props(SampleErrorHandlingConsumer.class)), timeout, executionContext), - timeout); - return camel.template().requestBody("direct:error-handler-test-java", "hello", String.class); - } - catch (Exception e) { - return e.getMessage(); - } - } - }.occurrences(1).exec(); - assertEquals("error: hello", result); - }}; - } + @Test + public void shouldHandleExceptionThrownByActorAndGenerateCustomResponse() + throws Exception { + new JavaTestKit(system) { + { + String result = new EventFilter(Exception.class) { + protected String run() { + FiniteDuration timeout = Duration.create(1, TimeUnit.SECONDS); + Camel camel = CamelExtension.get(system); + ExecutionContext executionContext = system.dispatcher(); + try { + @SuppressWarnings("unused") + ActorRef ref = Await.result(camel.activationFutureFor( + system.actorOf(new Props(SampleErrorHandlingConsumer.class)), + timeout, executionContext), timeout); + return camel.template().requestBody( + "direct:error-handler-test-java", "hello", String.class); + } catch (Exception e) { + return e.getMessage(); + } + } + }.occurrences(1).exec(); + assertEquals("error: hello", result); + } + }; + } } diff --git a/akka-camel/src/test/java/akka/camel/CustomRouteTestBase.java b/akka-camel/src/test/java/akka/camel/CustomRouteTestBase.java index 5454dd0074..db26c9e8ab 100644 --- a/akka-camel/src/test/java/akka/camel/CustomRouteTestBase.java +++ b/akka-camel/src/test/java/akka/camel/CustomRouteTestBase.java @@ -208,7 +208,7 @@ public class CustomRouteTestBase { @Override public void onReceive(Object message) { this.getProducerTemplate().sendBody(to, "test"); - getSender().tell(Ack.getInstance()); + getSender().tell(Ack.getInstance(), getSelf()); } } } diff --git a/akka-camel/src/test/java/akka/camel/SampleErrorHandlingConsumer.java b/akka-camel/src/test/java/akka/camel/SampleErrorHandlingConsumer.java index f0bd9ebf3f..e5603acec1 100644 --- a/akka-camel/src/test/java/akka/camel/SampleErrorHandlingConsumer.java +++ b/akka-camel/src/test/java/akka/camel/SampleErrorHandlingConsumer.java @@ -42,7 +42,7 @@ public class SampleErrorHandlingConsumer extends UntypedConsumerActor { @Override public void preRestart(Throwable reason, Option message){ - getSender().tell(new Status.Failure(reason)); + getSender().tell(new Status.Failure(reason), getSelf()); } } diff --git a/akka-camel/src/test/java/akka/camel/SampleUntypedConsumer.java b/akka-camel/src/test/java/akka/camel/SampleUntypedConsumer.java index f52a484ccc..be293c21b9 100644 --- a/akka-camel/src/test/java/akka/camel/SampleUntypedConsumer.java +++ b/akka-camel/src/test/java/akka/camel/SampleUntypedConsumer.java @@ -19,7 +19,7 @@ public class SampleUntypedConsumer extends UntypedConsumerActor { CamelMessage msg = (CamelMessage)message; String body = msg.getBodyAs(String.class, getCamelContext()); String header = msg.getHeaderAs("test", String.class,getCamelContext()); - sender().tell(String.format("%s %s", body, header)); + sender().tell(String.format("%s %s", body, header), getSelf()); } } diff --git a/akka-cluster/src/main/resources/reference.conf b/akka-cluster/src/main/resources/reference.conf index fa6860a1a8..e2fe6cc8d1 100644 --- a/akka-cluster/src/main/resources/reference.conf +++ b/akka-cluster/src/main/resources/reference.conf @@ -36,9 +36,6 @@ akka { # how often should the node send out gossip information? gossip-interval = 1s - # how often should the node send out heartbeats? - heartbeat-interval = 1s - # how often should the leader perform maintenance tasks? leader-actions-interval = 1s @@ -76,6 +73,9 @@ akka { # akka.cluster.ClusterSettings parameters implementation-class = "akka.cluster.AccrualFailureDetector" + # how often should the node send out heartbeats? + heartbeat-interval = 1s + # defines the failure detector threshold # A low threshold is prone to generate many wrong suspicions but ensures # a quick detection in the event of a real crash. Conversely, a high diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterSettings.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterSettings.scala index 4212e59c1c..3c7baa4f76 100644 --- a/akka-cluster/src/main/scala/akka/cluster/ClusterSettings.scala +++ b/akka-cluster/src/main/scala/akka/cluster/ClusterSettings.scala @@ -23,6 +23,7 @@ class ClusterSettings(val config: Config, val systemName: String) { Duration(getMilliseconds("akka.cluster.failure-detector.min-std-deviation"), MILLISECONDS) final val FailureDetectorAcceptableHeartbeatPause: FiniteDuration = Duration(getMilliseconds("akka.cluster.failure-detector.acceptable-heartbeat-pause"), MILLISECONDS) + final val HeartbeatInterval: FiniteDuration = Duration(getMilliseconds("akka.cluster.failure-detector.heartbeat-interval"), MILLISECONDS) final val SeedNodes: IndexedSeq[Address] = getStringList("akka.cluster.seed-nodes").asScala.map { case AddressFromURIString(addr) ⇒ addr @@ -30,7 +31,6 @@ class ClusterSettings(val config: Config, val systemName: String) { final val SeedNodeTimeout: FiniteDuration = Duration(getMilliseconds("akka.cluster.seed-node-timeout"), MILLISECONDS) final val PeriodicTasksInitialDelay: FiniteDuration = Duration(getMilliseconds("akka.cluster.periodic-tasks-initial-delay"), MILLISECONDS) final val GossipInterval: FiniteDuration = Duration(getMilliseconds("akka.cluster.gossip-interval"), MILLISECONDS) - final val HeartbeatInterval: FiniteDuration = Duration(getMilliseconds("akka.cluster.heartbeat-interval"), MILLISECONDS) final val LeaderActionsInterval: FiniteDuration = Duration(getMilliseconds("akka.cluster.leader-actions-interval"), MILLISECONDS) final val UnreachableNodesReaperInterval: FiniteDuration = Duration(getMilliseconds("akka.cluster.unreachable-nodes-reaper-interval"), MILLISECONDS) final val PublishStatsInterval: FiniteDuration = Duration(getMilliseconds("akka.cluster.publish-stats-interval"), MILLISECONDS) diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala index f38d80ace5..68ed7d91e7 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala @@ -8,7 +8,7 @@ import com.typesafe.config.Config import com.typesafe.config.ConfigFactory import akka.actor.{ Address, ExtendedActorSystem } import akka.remote.testconductor.RoleName -import akka.remote.testkit.{STMultiNodeSpec, MultiNodeSpec} +import akka.remote.testkit.{ STMultiNodeSpec, MultiNodeSpec } import akka.testkit._ import scala.concurrent.util.duration._ import scala.concurrent.util.Duration @@ -31,15 +31,15 @@ object MultiNodeClusterSpec { def clusterConfig: Config = ConfigFactory.parseString(""" akka.actor.provider = akka.cluster.ClusterActorRefProvider akka.cluster { - auto-join = on - auto-down = off - jmx.enabled = off - gossip-interval = 200 ms - heartbeat-interval = 400 ms - leader-actions-interval = 200 ms - unreachable-nodes-reaper-interval = 200 ms - periodic-tasks-initial-delay = 300 ms - publish-stats-interval = 0 s # always, when it happens + auto-join = on + auto-down = off + jmx.enabled = off + gossip-interval = 200 ms + leader-actions-interval = 200 ms + unreachable-nodes-reaper-interval = 200 ms + periodic-tasks-initial-delay = 300 ms + publish-stats-interval = 0 s # always, when it happens + failure-detector.heartbeat-interval = 400 ms } akka.remote.log-remote-lifecycle-events = off akka.test { diff --git a/akka-docs/_sphinx/themes/akka/layout.html b/akka-docs/_sphinx/themes/akka/layout.html index 5abad17ee3..426a289876 100644 --- a/akka-docs/_sphinx/themes/akka/layout.html +++ b/akka-docs/_sphinx/themes/akka/layout.html @@ -48,6 +48,7 @@