From fd1acb93263929eb9deb84e0ba60b9afed9eaf8e Mon Sep 17 00:00:00 2001 From: Christopher Batey Date: Thu, 13 Jun 2019 20:44:30 +0100 Subject: [PATCH] Upgrade to Aeron 1.19.1 (#27043) * Upgrade to Aeron 1.19.1 No mention of on the wire incompatibilities in release notes for versions 1.15->1.19 * fix compilation issue with new aeron * Set default publication unblock timeout to 40s This needs to be bigger than the liveness timeout. Aeron defaults these to 5seconds and 10seconds. Akka uses 20s for the liveness so use 40s for the unblock to keep the same relation between the properties as Aeron has. * Add publication unblock timeout in sharedmedia driver * Update akka-remote/src/main/scala/akka/remote/artery/ArterySettings.scala Co-Authored-By: Helena Edelson --- .../scala/akka/cluster/SharedMediaDriverSupport.scala | 1 + akka-remote/src/main/resources/reference.conf | 4 ++++ .../src/main/scala/akka/remote/artery/ArterySettings.scala | 4 ++++ .../akka/remote/artery/aeron/ArteryAeronUdpTransport.scala | 1 + .../src/test/java/akka/remote/artery/aeron/AeronStat.java | 2 +- project/Dependencies.scala | 4 ++-- 6 files changed, 13 insertions(+), 3 deletions(-) diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/SharedMediaDriverSupport.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/SharedMediaDriverSupport.scala index 54bc3c1c38..0632d27c48 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/SharedMediaDriverSupport.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/SharedMediaDriverSupport.scala @@ -64,6 +64,7 @@ object SharedMediaDriverSupport { val driverContext = new MediaDriver.Context driverContext.aeronDirectoryName(aeronDir) driverContext.clientLivenessTimeoutNs(arterySettings.Advanced.Aeron.ClientLivenessTimeout.toNanos) + driverContext.publicationUnblockTimeoutNs(arterySettings.Advanced.Aeron.PublicationUnblockTimeout.toNanos) driverContext.imageLivenessTimeoutNs(arterySettings.Advanced.Aeron.ImageLivenessTimeout.toNanos) driverContext.driverTimeoutMs(arterySettings.Advanced.Aeron.DriverTimeout.toMillis) val idleCpuLevel = arterySettings.Advanced.Aeron.IdleCpuLevel diff --git a/akka-remote/src/main/resources/reference.conf b/akka-remote/src/main/resources/reference.conf index 8cc4a10a89..5e6bb43028 100644 --- a/akka-remote/src/main/resources/reference.conf +++ b/akka-remote/src/main/resources/reference.conf @@ -1090,6 +1090,10 @@ akka { # Only used when transport is aeron-udp. client-liveness-timeout = 20 seconds + # Timout after after which an uncommitted publication will be unblocked + # Only used when transport is aeron-udp. + publication-unblock-timeout = 40 seconds + # Timeout for each the INACTIVE and LINGER stages an aeron image # will be retained for when it is no longer referenced. # This timeout must be less than the 'handshake-timeout'. diff --git a/akka-remote/src/main/scala/akka/remote/artery/ArterySettings.scala b/akka-remote/src/main/scala/akka/remote/artery/ArterySettings.scala index 621d9580f4..910215b40c 100644 --- a/akka-remote/src/main/scala/akka/remote/artery/ArterySettings.scala +++ b/akka-remote/src/main/scala/akka/remote/artery/ArterySettings.scala @@ -203,6 +203,10 @@ private[akka] final class ArterySettings private (config: Config) { config .getMillisDuration("client-liveness-timeout") .requiring(interval => interval > Duration.Zero, "client-liveness-timeout must be more than zero") + val PublicationUnblockTimeout: FiniteDuration = + config + .getMillisDuration("publication-unblock-timeout") + .requiring(interval => interval > Duration.Zero, "publication-unblock-timeout must be greater than zero") val ImageLivenessTimeout: FiniteDuration = config .getMillisDuration("image-liveness-timeout") .requiring(interval => interval > Duration.Zero, "image-liveness-timeout must be more than zero") diff --git a/akka-remote/src/main/scala/akka/remote/artery/aeron/ArteryAeronUdpTransport.scala b/akka-remote/src/main/scala/akka/remote/artery/aeron/ArteryAeronUdpTransport.scala index d3273dd7a2..52f095b092 100644 --- a/akka-remote/src/main/scala/akka/remote/artery/aeron/ArteryAeronUdpTransport.scala +++ b/akka-remote/src/main/scala/akka/remote/artery/aeron/ArteryAeronUdpTransport.scala @@ -95,6 +95,7 @@ private[remote] class ArteryAeronUdpTransport(_system: ExtendedActorSystem, _pro driverContext.aeronDirectoryName(randomName) } driverContext.clientLivenessTimeoutNs(settings.Advanced.Aeron.ClientLivenessTimeout.toNanos) + driverContext.publicationUnblockTimeoutNs(settings.Advanced.Aeron.PublicationUnblockTimeout.toNanos) driverContext.imageLivenessTimeoutNs(settings.Advanced.Aeron.ImageLivenessTimeout.toNanos) driverContext.driverTimeoutMs(settings.Advanced.Aeron.DriverTimeout.toMillis) diff --git a/akka-remote/src/test/java/akka/remote/artery/aeron/AeronStat.java b/akka-remote/src/test/java/akka/remote/artery/aeron/AeronStat.java index eae061a5c5..417e50da03 100644 --- a/akka-remote/src/test/java/akka/remote/artery/aeron/AeronStat.java +++ b/akka-remote/src/test/java/akka/remote/artery/aeron/AeronStat.java @@ -38,7 +38,7 @@ import static io.aeron.driver.status.PublisherLimit.PUBLISHER_LIMIT_TYPE_ID; import static io.aeron.driver.status.ReceiveChannelStatus.RECEIVE_CHANNEL_STATUS_TYPE_ID; import static io.aeron.driver.status.ReceiverPos.RECEIVER_POS_TYPE_ID; import static io.aeron.driver.status.SendChannelStatus.SEND_CHANNEL_STATUS_TYPE_ID; -import static io.aeron.driver.status.StreamPositionCounter.*; +import static io.aeron.driver.status.StreamCounter.*; import static io.aeron.driver.status.SystemCounterDescriptor.SYSTEM_COUNTER_TYPE_ID; /** diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 89c464a63e..88a0f86724 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -18,9 +18,9 @@ object Dependencies { val slf4jVersion = "1.7.25" val scalaXmlVersion = "1.0.6" // check agrona version when updating this - val aeronVersion = "1.15.1" + val aeronVersion = "1.19.1" // needs to be inline with the aeron version - val agronaVersion = "0.9.31" + val agronaVersion = "1.0.1" val nettyVersion = "3.10.6.Final" val jacksonVersion = "2.9.9"