diff --git a/akka-multi-node-testkit/src/main/scala/akka/remote/testkit/FlightRecordingSupport.scala b/akka-multi-node-testkit/src/main/scala/akka/remote/testkit/FlightRecordingSupport.scala index c5aa24275b..a19b067f46 100644 --- a/akka-multi-node-testkit/src/main/scala/akka/remote/testkit/FlightRecordingSupport.scala +++ b/akka-multi-node-testkit/src/main/scala/akka/remote/testkit/FlightRecordingSupport.scala @@ -46,7 +46,7 @@ trait FlightRecordingSupport { self: MultiNodeSpec ⇒ final protected def printFlightRecording(): Unit = { if (arteryEnabled && destinationIsValidForDump() && Files.exists(flightRecorderFile)) { // use stdout/println as we do not know if the system log is alive - println("Flight recorder dump:") + println(s"Flight recorder dump from '$flightRecorderFile':") FlightRecorderReader.dumpToStdout(flightRecorderFile) } } diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/AttemptSysMsgRedeliverySpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/AttemptSysMsgRedeliverySpec.scala index fd1d2d079b..ba801dd1b7 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/AttemptSysMsgRedeliverySpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/AttemptSysMsgRedeliverySpec.scala @@ -24,7 +24,7 @@ class AttemptSysMsgRedeliveryMultiJvmSpec(artery: Boolean) extends MultiNodeConf commonConfig(debugConfig(on = false).withFallback( ConfigFactory.parseString(s""" akka.remote.artery.enabled = $artery - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) testTransport(on = true) @@ -53,7 +53,7 @@ object AttemptSysMsgRedeliverySpec { } abstract class AttemptSysMsgRedeliverySpec(multiNodeConfig: AttemptSysMsgRedeliveryMultiJvmSpec) - extends MultiNodeRemotingSpec(multiNodeConfig) { + extends RemotingMultiNodeSpec(multiNodeConfig) { import multiNodeConfig._ import AttemptSysMsgRedeliverySpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/LookupRemoteActorSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/LookupRemoteActorSpec.scala index 47fe16b294..b5b5d23726 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/LookupRemoteActorSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/LookupRemoteActorSpec.scala @@ -18,7 +18,7 @@ class LookupRemoteActorMultiJvmSpec(artery: Boolean) extends MultiNodeConfig { commonConfig(debugConfig(on = false).withFallback( ConfigFactory.parseString(s""" akka.remote.artery.enabled = $artery - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) val master = role("master") val slave = role("slave") @@ -40,7 +40,7 @@ object LookupRemoteActorSpec { } abstract class LookupRemoteActorSpec(multiNodeConfig: LookupRemoteActorMultiJvmSpec) - extends MultiNodeRemotingSpec(multiNodeConfig) { + extends RemotingMultiNodeSpec(multiNodeConfig) { import multiNodeConfig._ import LookupRemoteActorSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/NewRemoteActorSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/NewRemoteActorSpec.scala index 66025899da..a1e76b8ae7 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/NewRemoteActorSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/NewRemoteActorSpec.scala @@ -20,7 +20,7 @@ class NewRemoteActorMultiJvmSpec(artery: Boolean) extends MultiNodeConfig { ConfigFactory.parseString(s""" akka.remote.log-remote-lifecycle-events = off akka.remote.artery.enabled = $artery - """).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf))) + """).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf))) val master = role("master") val slave = role("slave") @@ -55,7 +55,7 @@ object NewRemoteActorSpec { } abstract class NewRemoteActorSpec(multiNodeConfig: NewRemoteActorMultiJvmSpec) - extends MultiNodeRemotingSpec(multiNodeConfig) { + extends RemotingMultiNodeSpec(multiNodeConfig) { import multiNodeConfig._ import NewRemoteActorSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/PiercingShouldKeepQuarantineSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/PiercingShouldKeepQuarantineSpec.scala index 6c3b9df226..12efbba067 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/PiercingShouldKeepQuarantineSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/PiercingShouldKeepQuarantineSpec.scala @@ -15,7 +15,7 @@ class PiercingShouldKeepQuarantineConfig(artery: Boolean) extends MultiNodeConfi ConfigFactory.parseString(s""" akka.remote.retry-gate-closed-for = 0.5s akka.remote.artery.enabled = $artery - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) } @@ -38,7 +38,7 @@ object PiercingShouldKeepQuarantineSpec { } abstract class PiercingShouldKeepQuarantineSpec(multiNodeConfig: PiercingShouldKeepQuarantineConfig) - extends MultiNodeRemotingSpec(multiNodeConfig) { + extends RemotingMultiNodeSpec(multiNodeConfig) { import multiNodeConfig._ import PiercingShouldKeepQuarantineSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteDeliverySpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteDeliverySpec.scala index d54c90e4f8..36bc57e4fb 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteDeliverySpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteDeliverySpec.scala @@ -26,7 +26,7 @@ class RemoteDeliveryConfig(artery: Boolean) extends MultiNodeConfig { commonConfig(debugConfig(on = false).withFallback( ConfigFactory.parseString(s""" akka.remote.artery.enabled = $artery - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) } class RemoteDeliveryMultiJvmNode1 extends RemoteDeliverySpec(new RemoteDeliveryConfig(artery = false)) @@ -48,7 +48,7 @@ object RemoteDeliverySpec { } abstract class RemoteDeliverySpec(multiNodeConfig: RemoteDeliveryConfig) - extends MultiNodeRemotingSpec(multiNodeConfig) { + extends RemotingMultiNodeSpec(multiNodeConfig) { import multiNodeConfig._ import RemoteDeliverySpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteDeploymentDeathWatchSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteDeploymentDeathWatchSpec.scala index a469a5baf1..bc4e23f86d 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteDeploymentDeathWatchSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteDeploymentDeathWatchSpec.scala @@ -27,7 +27,7 @@ class RemoteDeploymentDeathWatchMultiJvmSpec(artery: Boolean) extends MultiNodeC akka.loglevel = INFO akka.remote.log-remote-lifecycle-events = off akka.remote.artery.enabled = $artery - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) deployOn(second, """/hello.remote = "@third@" """) @@ -69,7 +69,7 @@ object RemoteDeploymentDeathWatchSpec { } abstract class RemoteDeploymentDeathWatchSpec(multiNodeConfig: RemoteDeploymentDeathWatchMultiJvmSpec) - extends MultiNodeRemotingSpec(multiNodeConfig) { + extends RemotingMultiNodeSpec(multiNodeConfig) { import multiNodeConfig._ import RemoteDeploymentDeathWatchSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteGatePiercingSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteGatePiercingSpec.scala index 08f6269945..deb454dce7 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteGatePiercingSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteGatePiercingSpec.scala @@ -51,7 +51,7 @@ class RemoteGatePiercingSpecMultiJvmNode1 extends RemoteGatePiercingSpec class RemoteGatePiercingSpecMultiJvmNode2 extends RemoteGatePiercingSpec abstract class RemoteGatePiercingSpec - extends MultiNodeRemotingSpec(RemoteGatePiercingSpec) { + extends RemotingMultiNodeSpec(RemoteGatePiercingSpec) { import RemoteGatePiercingSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeDeathWatchSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeDeathWatchSpec.scala index 4fe5da25ce..e71eefaf8d 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeDeathWatchSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeDeathWatchSpec.scala @@ -5,7 +5,7 @@ package akka.remote import language.postfixOps import scala.concurrent.duration._ -import com.typesafe.config.ConfigFactory +import com.typesafe.config.{ Config, ConfigFactory } import akka.actor.Actor import akka.actor.ActorIdentity import akka.actor.ActorRef @@ -31,7 +31,7 @@ class RemoteNodeDeathWatchConfig(artery: Boolean) extends MultiNodeConfig { ## Use a tighter setting than the default, otherwise it takes 20s for DeathWatch to trigger akka.remote.watch-failure-detector.acceptable-heartbeat-pause = 3 s akka.remote.artery.enabled = $artery - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) } @@ -92,7 +92,7 @@ object RemoteNodeDeathWatchSpec { } abstract class RemoteNodeDeathWatchSpec(multiNodeConfig: RemoteNodeDeathWatchConfig) - extends MultiNodeRemotingSpec(multiNodeConfig) { + extends RemotingMultiNodeSpec(multiNodeConfig) { import multiNodeConfig._ import RemoteNodeDeathWatchSpec._ import RemoteWatcher._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeRestartDeathWatchSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeRestartDeathWatchSpec.scala index 63dc11987a..43bcbd2af5 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeRestartDeathWatchSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeRestartDeathWatchSpec.scala @@ -63,7 +63,7 @@ object RemoteNodeRestartDeathWatchSpec { } abstract class RemoteNodeRestartDeathWatchSpec(multiNodeConfig: RemoteNodeRestartDeathWatchConfig) - extends MultiNodeRemotingSpec(multiNodeConfig) { + extends RemotingMultiNodeSpec(multiNodeConfig) { import multiNodeConfig._ import RemoteNodeRestartDeathWatchSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeRestartGateSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeRestartGateSpec.scala index ee7015602d..00232f85ac 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeRestartGateSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeRestartGateSpec.scala @@ -46,7 +46,7 @@ class RemoteNodeRestartGateSpecMultiJvmNode1 extends RemoteNodeRestartGateSpec class RemoteNodeRestartGateSpecMultiJvmNode2 extends RemoteNodeRestartGateSpec abstract class RemoteNodeRestartGateSpec - extends MultiNodeRemotingSpec(RemoteNodeRestartGateSpec) { + extends RemotingMultiNodeSpec(RemoteNodeRestartGateSpec) { import RemoteNodeRestartGateSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeShutdownAndComesBackSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeShutdownAndComesBackSpec.scala index b396c6e402..3906efb013 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeShutdownAndComesBackSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteNodeShutdownAndComesBackSpec.scala @@ -47,7 +47,7 @@ class RemoteNodeShutdownAndComesBackMultiJvmNode1 extends RemoteNodeShutdownAndC class RemoteNodeShutdownAndComesBackMultiJvmNode2 extends RemoteNodeShutdownAndComesBackSpec abstract class RemoteNodeShutdownAndComesBackSpec - extends MultiNodeRemotingSpec(RemoteNodeShutdownAndComesBackSpec) { + extends RemotingMultiNodeSpec(RemoteNodeShutdownAndComesBackSpec) { import RemoteNodeShutdownAndComesBackSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteQuarantinePiercingSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteQuarantinePiercingSpec.scala index 7790ea489e..401a3bf104 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteQuarantinePiercingSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteQuarantinePiercingSpec.scala @@ -27,7 +27,7 @@ class RemoteQuarantinePiercingConfig(artery: Boolean) extends MultiNodeConfig { akka.loglevel = INFO akka.remote.log-remote-lifecycle-events = INFO akka.remote.artery.enabled = $artery - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) } @@ -51,7 +51,7 @@ object RemoteQuarantinePiercingSpec { } abstract class RemoteQuarantinePiercingSpec(multiNodeConfig: RemoteQuarantinePiercingConfig) - extends MultiNodeRemotingSpec(multiNodeConfig) { + extends RemotingMultiNodeSpec(multiNodeConfig) { import multiNodeConfig._ import RemoteQuarantinePiercingSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteReDeploymentSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteReDeploymentSpec.scala index 5e7253286f..27bfe09e22 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteReDeploymentSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteReDeploymentSpec.scala @@ -35,7 +35,7 @@ class RemoteReDeploymentConfig(artery: Boolean) extends MultiNodeConfig { acceptable-heartbeat-pause=2.5s } akka.remote.artery.enabled = $artery - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) testTransport(on = true) @@ -106,7 +106,7 @@ object RemoteReDeploymentMultiJvmSpec { } abstract class RemoteReDeploymentMultiJvmSpec(multiNodeConfig: RemoteReDeploymentConfig) - extends MultiNodeRemotingSpec(multiNodeConfig) { + extends RemotingMultiNodeSpec(multiNodeConfig) { def sleepAfterKill: FiniteDuration def expectQuarantine: Boolean diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteRestartedQuarantinedSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteRestartedQuarantinedSpec.scala index cd53abd011..11c5ae726c 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteRestartedQuarantinedSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemoteRestartedQuarantinedSpec.scala @@ -56,7 +56,7 @@ class RemoteRestartedQuarantinedSpecMultiJvmNode1 extends RemoteRestartedQuarant class RemoteRestartedQuarantinedSpecMultiJvmNode2 extends RemoteRestartedQuarantinedSpec abstract class RemoteRestartedQuarantinedSpec - extends MultiNodeRemotingSpec(RemoteRestartedQuarantinedSpec) { + extends RemotingMultiNodeSpec(RemoteRestartedQuarantinedSpec) { import RemoteRestartedQuarantinedSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/MultiNodeRemotingSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemotingMultiNodeSpec.scala similarity index 93% rename from akka-remote-tests/src/multi-jvm/scala/akka/remote/MultiNodeRemotingSpec.scala rename to akka-remote-tests/src/multi-jvm/scala/akka/remote/RemotingMultiNodeSpec.scala index 65e92bc68a..fddc369110 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/MultiNodeRemotingSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/RemotingMultiNodeSpec.scala @@ -10,7 +10,7 @@ import akka.testkit.{ DefaultTimeout, ImplicitSender } import com.typesafe.config.ConfigFactory import org.scalatest.{ Outcome, Suite } -object MultiNodeRemotingSpec { +object RemotingMultiNodeSpec { def arteryFlightRecordingConf = ConfigFactory.parseString( @@ -23,7 +23,7 @@ object MultiNodeRemotingSpec { } -abstract class MultiNodeRemotingSpec(config: MultiNodeConfig) extends MultiNodeSpec(config) +abstract class RemotingMultiNodeSpec(config: MultiNodeConfig) extends MultiNodeSpec(config) with Suite with STMultiNodeSpec with FlightRecordingSupport diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/Ticket15109Spec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/Ticket15109Spec.scala index b43610fea1..ae00b68ac2 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/Ticket15109Spec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/Ticket15109Spec.scala @@ -47,7 +47,7 @@ object Ticket15109Spec extends MultiNodeConfig { class Ticket15109SpecMultiJvmNode1 extends Ticket15109Spec class Ticket15109SpecMultiJvmNode2 extends Ticket15109Spec -abstract class Ticket15109Spec extends MultiNodeRemotingSpec(Ticket15109Spec) { +abstract class Ticket15109Spec extends RemotingMultiNodeSpec(Ticket15109Spec) { import Ticket15109Spec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/LatencySpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/LatencySpec.scala index d7a5763be7..884a1fbbed 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/LatencySpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/LatencySpec.scala @@ -9,7 +9,7 @@ import java.util.concurrent.locks.LockSupport import scala.concurrent.duration._ import akka.actor._ -import akka.remote.MultiNodeRemotingSpec +import akka.remote.RemotingMultiNodeSpec import akka.remote.testconductor.RoleName import akka.remote.testkit.MultiNodeConfig import akka.remote.testkit.MultiNodeSpec @@ -53,7 +53,7 @@ object LatencySpec extends MultiNodeConfig { } } } - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) final case object Reset @@ -161,7 +161,7 @@ class LatencySpecMultiJvmNode1 extends LatencySpec class LatencySpecMultiJvmNode2 extends LatencySpec abstract class LatencySpec - extends MultiNodeRemotingSpec(LatencySpec) { + extends RemotingMultiNodeSpec(LatencySpec) { import LatencySpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/MaxThroughputSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/MaxThroughputSpec.scala index 9966befdaa..ca19ed0339 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/MaxThroughputSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/MaxThroughputSpec.scala @@ -9,7 +9,7 @@ import java.util.concurrent.TimeUnit.NANOSECONDS import scala.concurrent.duration._ import akka.actor._ -import akka.remote.{ MultiNodeRemotingSpec, RARP, RemoteActorRefProvider } +import akka.remote.{ RemotingMultiNodeSpec, RARP, RemoteActorRefProvider } import akka.remote.testconductor.RoleName import akka.remote.testkit.MultiNodeConfig import akka.remote.testkit.MultiNodeSpec @@ -67,7 +67,7 @@ object MaxThroughputSpec extends MultiNodeConfig { } } } - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) case object Run sealed trait Echo extends DeadLetterSuppression with JavaSerializable @@ -277,7 +277,7 @@ object MaxThroughputSpec extends MultiNodeConfig { class MaxThroughputSpecMultiJvmNode1 extends MaxThroughputSpec class MaxThroughputSpecMultiJvmNode2 extends MaxThroughputSpec -abstract class MaxThroughputSpec extends MultiNodeRemotingSpec(MaxThroughputSpec) with PerfFlamesSupport { +abstract class MaxThroughputSpec extends RemotingMultiNodeSpec(MaxThroughputSpec) with PerfFlamesSupport { import MaxThroughputSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/RemoteRestartedQuarantinedSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/RemoteRestartedQuarantinedSpec.scala index 333de1a87e..feb28d84a4 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/RemoteRestartedQuarantinedSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/RemoteRestartedQuarantinedSpec.scala @@ -20,7 +20,7 @@ import akka.remote.testconductor.RoleName import akka.actor.Identify import scala.concurrent.Await -import akka.remote.{ AddressUidExtension, MultiNodeRemotingSpec, RARP, ThisActorSystemQuarantinedEvent } +import akka.remote.{ AddressUidExtension, RemotingMultiNodeSpec, RARP, ThisActorSystemQuarantinedEvent } object RemoteRestartedQuarantinedSpec extends MultiNodeConfig { val first = role("first") @@ -31,7 +31,7 @@ object RemoteRestartedQuarantinedSpec extends MultiNodeConfig { akka.loglevel = WARNING akka.remote.log-remote-lifecycle-events = WARNING akka.remote.artery.enabled = on - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) class Subject extends Actor { def receive = { @@ -45,7 +45,7 @@ object RemoteRestartedQuarantinedSpec extends MultiNodeConfig { class RemoteRestartedQuarantinedSpecMultiJvmNode1 extends RemoteRestartedQuarantinedSpec class RemoteRestartedQuarantinedSpecMultiJvmNode2 extends RemoteRestartedQuarantinedSpec -abstract class RemoteRestartedQuarantinedSpec extends MultiNodeRemotingSpec(RemoteRestartedQuarantinedSpec) { +abstract class RemoteRestartedQuarantinedSpec extends RemotingMultiNodeSpec(RemoteRestartedQuarantinedSpec) { import RemoteRestartedQuarantinedSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/SurviveNetworkPartitionSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/SurviveNetworkPartitionSpec.scala index 3356111b5d..72d02c5952 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/SurviveNetworkPartitionSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/SurviveNetworkPartitionSpec.scala @@ -7,7 +7,7 @@ import scala.concurrent.duration._ import akka.actor._ import akka.actor.ActorIdentity import akka.actor.Identify -import akka.remote.{ MultiNodeRemotingSpec, QuarantinedEvent, RARP } +import akka.remote.{ RemotingMultiNodeSpec, QuarantinedEvent, RARP } import akka.remote.testconductor.RoleName import akka.remote.testkit.MultiNodeConfig import akka.remote.testkit.MultiNodeSpec @@ -25,7 +25,7 @@ object SurviveNetworkPartitionSpec extends MultiNodeConfig { akka.loglevel = INFO akka.remote.artery.enabled = on akka.remote.artery.advanced.give-up-system-message-after = 4s - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) testTransport(on = true) } @@ -33,7 +33,7 @@ object SurviveNetworkPartitionSpec extends MultiNodeConfig { class SurviveNetworkPartitionSpecMultiJvmNode1 extends SurviveNetworkPartitionSpec class SurviveNetworkPartitionSpecMultiJvmNode2 extends SurviveNetworkPartitionSpec -abstract class SurviveNetworkPartitionSpec extends MultiNodeRemotingSpec(SurviveNetworkPartitionSpec) { +abstract class SurviveNetworkPartitionSpec extends RemotingMultiNodeSpec(SurviveNetworkPartitionSpec) { import SurviveNetworkPartitionSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRandomSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRandomSpec.scala index 27cce605b0..b92d7198ee 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRandomSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRandomSpec.scala @@ -9,7 +9,7 @@ import akka.actor.ActorRef import akka.actor.Address import akka.actor.PoisonPill import akka.actor.Props -import akka.remote.MultiNodeRemotingSpec +import akka.remote.RemotingMultiNodeSpec import akka.remote.testkit.{ MultiNodeConfig, MultiNodeSpec, STMultiNodeSpec } import akka.routing.Broadcast import akka.routing.RandomPool @@ -27,7 +27,7 @@ class RemoteRandomConfig(artery: Boolean) extends MultiNodeConfig { commonConfig(debugConfig(on = false).withFallback( ConfigFactory.parseString(s""" akka.remote.artery.enabled = $artery - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) deployOnAll(""" /service-hello { @@ -56,7 +56,7 @@ object RemoteRandomSpec { } } -class RemoteRandomSpec(multiNodeConfig: RemoteRandomConfig) extends MultiNodeRemotingSpec(multiNodeConfig) +class RemoteRandomSpec(multiNodeConfig: RemoteRandomConfig) extends RemotingMultiNodeSpec(multiNodeConfig) with DefaultTimeout { import multiNodeConfig._ import RemoteRandomSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRoundRobinSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRoundRobinSpec.scala index 8c21c7c644..e87cb3004d 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRoundRobinSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteRoundRobinSpec.scala @@ -3,32 +3,19 @@ */ package akka.remote.routing -import language.postfixOps -import scala.collection.immutable -import akka.actor.Actor -import akka.actor.ActorRef -import akka.actor.Props -import akka.actor.PoisonPill -import akka.actor.Address - -import scala.concurrent.Await +import akka.actor.{Actor, ActorRef, Address, PoisonPill, Props} import akka.pattern.ask -import akka.remote.MultiNodeRemotingSpec -import akka.remote.testkit.{ MultiNodeConfig, MultiNodeSpec, STMultiNodeSpec } -import akka.routing.Broadcast -import akka.routing.GetRoutees -import akka.routing.Routees -import akka.routing.RoundRobinPool -import akka.routing.RoundRobinGroup -import akka.routing.RoutedActorRef -import akka.routing.Resizer -import akka.routing.Routee -import akka.routing.FromConfig +import akka.remote.RemotingMultiNodeSpec +import akka.remote.testkit.MultiNodeConfig +import akka.routing._ import akka.testkit._ - -import scala.concurrent.duration._ import com.typesafe.config.ConfigFactory +import scala.collection.immutable +import scala.concurrent.Await +import scala.concurrent.duration._ +import scala.language.postfixOps + class RemoteRoundRobinConfig(artery: Boolean) extends MultiNodeConfig { val first = role("first") @@ -39,7 +26,7 @@ class RemoteRoundRobinConfig(artery: Boolean) extends MultiNodeConfig { commonConfig(debugConfig(on = false).withFallback( ConfigFactory.parseString(s""" akka.remote.artery.enabled = $artery - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) deployOnAll(""" /service-hello { @@ -86,10 +73,10 @@ object RemoteRoundRobinSpec { } } -class RemoteRoundRobinSpec(multiNodeConfig: RemoteRoundRobinConfig) extends MultiNodeRemotingSpec(multiNodeConfig) +class RemoteRoundRobinSpec(multiNodeConfig: RemoteRoundRobinConfig) extends RemotingMultiNodeSpec(multiNodeConfig) with DefaultTimeout { - import multiNodeConfig._ import RemoteRoundRobinSpec._ + import multiNodeConfig._ def initialParticipants = roles.size diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteScatterGatherSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteScatterGatherSpec.scala index d671d5779b..62eb30e579 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteScatterGatherSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/routing/RemoteScatterGatherSpec.scala @@ -9,7 +9,7 @@ import akka.actor.ActorRef import akka.actor.Address import akka.actor.PoisonPill import akka.actor.Props -import akka.remote.MultiNodeRemotingSpec +import akka.remote.RemotingMultiNodeSpec import akka.remote.testkit.{ MultiNodeConfig, MultiNodeSpec, STMultiNodeSpec } import akka.routing.Broadcast import akka.routing.ScatterGatherFirstCompletedPool @@ -28,7 +28,7 @@ class RemoteScatterGatherConfig(artery: Boolean) extends MultiNodeConfig { commonConfig(debugConfig(on = false).withFallback( ConfigFactory.parseString(s""" akka.remote.artery.enabled = $artery - """)).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + """)).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) deployOnAll(""" /service-hello { @@ -57,7 +57,7 @@ object RemoteScatterGatherSpec { } } -class RemoteScatterGatherSpec(multiNodeConfig: RemoteScatterGatherConfig) extends MultiNodeRemotingSpec(multiNodeConfig) +class RemoteScatterGatherSpec(multiNodeConfig: RemoteScatterGatherConfig) extends RemotingMultiNodeSpec(multiNodeConfig) with DefaultTimeout { import multiNodeConfig._ import RemoteScatterGatherSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/testconductor/TestConductorSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/testconductor/TestConductorSpec.scala index c5cb873d65..8bbe6562d4 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/testconductor/TestConductorSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/testconductor/TestConductorSpec.scala @@ -15,12 +15,12 @@ import akka.testkit.LongRunningTest import java.net.InetSocketAddress import java.net.InetAddress -import akka.remote.MultiNodeRemotingSpec +import akka.remote.RemotingMultiNodeSpec import akka.remote.testkit.{ MultiNodeConfig, MultiNodeSpec, STMultiNodeSpec } import akka.remote.transport.ThrottlerTransportAdapter.Direction object TestConductorMultiJvmSpec extends MultiNodeConfig { - commonConfig(debugConfig(on = false).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + commonConfig(debugConfig(on = false).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) val master = role("master") val slave = role("slave") @@ -31,7 +31,7 @@ object TestConductorMultiJvmSpec extends MultiNodeConfig { class TestConductorMultiJvmNode1 extends TestConductorSpec class TestConductorMultiJvmNode2 extends TestConductorSpec -class TestConductorSpec extends MultiNodeRemotingSpec(TestConductorMultiJvmSpec) { +class TestConductorSpec extends RemotingMultiNodeSpec(TestConductorMultiJvmSpec) { import TestConductorMultiJvmSpec._ diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/testkit/MultiNodeSpecSpec.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/testkit/MultiNodeSpecSpec.scala index 99fc3b6add..887f6c4a68 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/testkit/MultiNodeSpecSpec.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/testkit/MultiNodeSpecSpec.scala @@ -3,11 +3,11 @@ */ package akka.remote.testkit -import akka.remote.MultiNodeRemotingSpec +import akka.remote.RemotingMultiNodeSpec import akka.testkit.LongRunningTest object MultiNodeSpecMultiJvmSpec extends MultiNodeConfig { - commonConfig(debugConfig(on = false).withFallback(MultiNodeRemotingSpec.arteryFlightRecordingConf)) + commonConfig(debugConfig(on = false).withFallback(RemotingMultiNodeSpec.arteryFlightRecordingConf)) val node1 = role("node1") val node2 = role("node2") @@ -20,7 +20,7 @@ class MultiNodeSpecSpecMultiJvmNode2 extends MultiNodeSpecSpec class MultiNodeSpecSpecMultiJvmNode3 extends MultiNodeSpecSpec class MultiNodeSpecSpecMultiJvmNode4 extends MultiNodeSpecSpec -class MultiNodeSpecSpec extends MultiNodeRemotingSpec(MultiNodeSpecMultiJvmSpec) { +class MultiNodeSpecSpec extends RemotingMultiNodeSpec(MultiNodeSpecMultiJvmSpec) { import MultiNodeSpecMultiJvmSpec._ diff --git a/akka-remote/src/main/scala/akka/remote/artery/ArteryTransport.scala b/akka-remote/src/main/scala/akka/remote/artery/ArteryTransport.scala index 799b114829..027ea6098c 100644 --- a/akka-remote/src/main/scala/akka/remote/artery/ArteryTransport.scala +++ b/akka-remote/src/main/scala/akka/remote/artery/ArteryTransport.scala @@ -7,12 +7,13 @@ import java.io.File import java.net.InetSocketAddress import java.nio.channels.{ DatagramChannel, FileChannel } import java.nio.file.Path +import java.util.UUID import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.{ AtomicLong, AtomicReference } import java.util.concurrent.atomic.AtomicBoolean import scala.annotation.tailrec -import scala.concurrent.{ Await, Future, Promise } +import scala.concurrent.{ Await, ExecutionContext, Future, Promise } import scala.concurrent.duration._ import scala.util.Failure import scala.util.Success @@ -47,6 +48,7 @@ import akka.remote.transport.ThrottlerTransportAdapter.Blackhole import akka.remote.transport.ThrottlerTransportAdapter.SetThrottle import akka.remote.transport.ThrottlerTransportAdapter.Unthrottled import akka.stream.AbruptTerminationException +import akka.stream.ActorAttributes.Dispatcher import akka.stream.ActorMaterializer import akka.stream.KillSwitches import akka.stream.Materializer @@ -58,11 +60,7 @@ import akka.stream.scaladsl.Sink import akka.stream.scaladsl.Source import akka.util.OptionVal import akka.util.WildcardIndex -import io.aeron.Aeron -import io.aeron.AvailableImageHandler -import io.aeron.CncFileDescriptor -import io.aeron.Image -import io.aeron.UnavailableImageHandler +import io.aeron._ import io.aeron.driver.MediaDriver import io.aeron.driver.ThreadingMode import io.aeron.exceptions.ConductorServiceTimeoutException @@ -381,6 +379,7 @@ private[remote] class ArteryTransport(_system: ExtendedActorSystem, _provider: R override def settings = provider.remoteSettings.Artery override def start(): Unit = { + Runtime.getRuntime.addShutdownHook(shutdownHook) startMediaDriver() startAeron() topLevelFREvents.loFreq(Transport_AeronStarted, NoMetaData) @@ -428,8 +427,7 @@ private[remote] class ArteryTransport(_system: ExtendedActorSystem, _provider: R private lazy val shutdownHook = new Thread { override def run(): Unit = { if (!_shutdown) { - internalShutdown() - + Await.result(internalShutdown(), 20.seconds) } } } @@ -437,8 +435,14 @@ private[remote] class ArteryTransport(_system: ExtendedActorSystem, _provider: R private def startMediaDriver(): Unit = { if (settings.Advanced.EmbeddedMediaDriver) { val driverContext = new MediaDriver.Context - if (settings.Advanced.AeronDirectoryName.nonEmpty) + if (settings.Advanced.AeronDirectoryName.nonEmpty) { driverContext.aeronDirectoryName(settings.Advanced.AeronDirectoryName) + } else { + // create a random name but include the actor system name for easier debugging + val uniquePart = UUID.randomUUID().toString + val randomName = s"${CommonContext.AERON_DIR_PROP_DEFAULT}-${system.name}-$uniquePart" + driverContext.aeronDirectoryName(randomName) + } driverContext.clientLivenessTimeoutNs(settings.Advanced.ClientLivenessTimeout.toNanos) driverContext.imageLivenessTimeoutNs(settings.Advanced.ImageLivenessTimeoutNs.toNanos) driverContext.driverTimeoutMs(settings.Advanced.DriverTimeout.toMillis) @@ -468,7 +472,6 @@ private[remote] class ArteryTransport(_system: ExtendedActorSystem, _provider: R val driver = MediaDriver.launchEmbedded(driverContext) log.info("Started embedded media driver in directory [{}]", driver.aeronDirectoryName) topLevelFREvents.loFreq(Transport_MediaDriverStarted, driver.aeronDirectoryName().getBytes("US-ASCII")) - Runtime.getRuntime.addShutdownHook(shutdownHook) if (!mediaDriver.compareAndSet(None, Some(driver))) { throw new IllegalStateException("media driver started more than once") } diff --git a/akka-remote/src/main/scala/akka/remote/artery/FlightRecorderReader.scala b/akka-remote/src/main/scala/akka/remote/artery/FlightRecorderReader.scala index 762accc4c7..43173bc8c6 100644 --- a/akka-remote/src/main/scala/akka/remote/artery/FlightRecorderReader.scala +++ b/akka-remote/src/main/scala/akka/remote/artery/FlightRecorderReader.scala @@ -199,7 +199,7 @@ private[akka] final class FlightRecorderReader(fileChannel: FileChannel) { case class RichEntry(timeStamp: Instant, dirty: Boolean, code: Long, metadata: Array[Byte]) { override def toString: String = { val textualCode = FlightRecorderEvents.eventDictionary.getOrElse(code, "").take(34) - val metadataString = new String(metadata, "UTF-8") + val metadataString = new String(metadata, "US-ASCII") f"[$timeStamp] ${if (dirty) "#" else ""} $code%3s $textualCode%-34s | $metadataString" } }