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"