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 <helena@users.noreply.github.com>
This commit is contained in:
Christopher Batey 2019-06-13 20:44:30 +01:00 committed by Patrik Nordwall
parent 6660e8504a
commit fd1acb9326
6 changed files with 13 additions and 3 deletions

View file

@ -64,6 +64,7 @@ object SharedMediaDriverSupport {
val driverContext = new MediaDriver.Context val driverContext = new MediaDriver.Context
driverContext.aeronDirectoryName(aeronDir) driverContext.aeronDirectoryName(aeronDir)
driverContext.clientLivenessTimeoutNs(arterySettings.Advanced.Aeron.ClientLivenessTimeout.toNanos) driverContext.clientLivenessTimeoutNs(arterySettings.Advanced.Aeron.ClientLivenessTimeout.toNanos)
driverContext.publicationUnblockTimeoutNs(arterySettings.Advanced.Aeron.PublicationUnblockTimeout.toNanos)
driverContext.imageLivenessTimeoutNs(arterySettings.Advanced.Aeron.ImageLivenessTimeout.toNanos) driverContext.imageLivenessTimeoutNs(arterySettings.Advanced.Aeron.ImageLivenessTimeout.toNanos)
driverContext.driverTimeoutMs(arterySettings.Advanced.Aeron.DriverTimeout.toMillis) driverContext.driverTimeoutMs(arterySettings.Advanced.Aeron.DriverTimeout.toMillis)
val idleCpuLevel = arterySettings.Advanced.Aeron.IdleCpuLevel val idleCpuLevel = arterySettings.Advanced.Aeron.IdleCpuLevel

View file

@ -1090,6 +1090,10 @@ akka {
# Only used when transport is aeron-udp. # Only used when transport is aeron-udp.
client-liveness-timeout = 20 seconds 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 # Timeout for each the INACTIVE and LINGER stages an aeron image
# will be retained for when it is no longer referenced. # will be retained for when it is no longer referenced.
# This timeout must be less than the 'handshake-timeout'. # This timeout must be less than the 'handshake-timeout'.

View file

@ -203,6 +203,10 @@ private[akka] final class ArterySettings private (config: Config) {
config config
.getMillisDuration("client-liveness-timeout") .getMillisDuration("client-liveness-timeout")
.requiring(interval => interval > Duration.Zero, "client-liveness-timeout must be more than zero") .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 val ImageLivenessTimeout: FiniteDuration = config
.getMillisDuration("image-liveness-timeout") .getMillisDuration("image-liveness-timeout")
.requiring(interval => interval > Duration.Zero, "image-liveness-timeout must be more than zero") .requiring(interval => interval > Duration.Zero, "image-liveness-timeout must be more than zero")

View file

@ -95,6 +95,7 @@ private[remote] class ArteryAeronUdpTransport(_system: ExtendedActorSystem, _pro
driverContext.aeronDirectoryName(randomName) driverContext.aeronDirectoryName(randomName)
} }
driverContext.clientLivenessTimeoutNs(settings.Advanced.Aeron.ClientLivenessTimeout.toNanos) driverContext.clientLivenessTimeoutNs(settings.Advanced.Aeron.ClientLivenessTimeout.toNanos)
driverContext.publicationUnblockTimeoutNs(settings.Advanced.Aeron.PublicationUnblockTimeout.toNanos)
driverContext.imageLivenessTimeoutNs(settings.Advanced.Aeron.ImageLivenessTimeout.toNanos) driverContext.imageLivenessTimeoutNs(settings.Advanced.Aeron.ImageLivenessTimeout.toNanos)
driverContext.driverTimeoutMs(settings.Advanced.Aeron.DriverTimeout.toMillis) driverContext.driverTimeoutMs(settings.Advanced.Aeron.DriverTimeout.toMillis)

View file

@ -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.ReceiveChannelStatus.RECEIVE_CHANNEL_STATUS_TYPE_ID;
import static io.aeron.driver.status.ReceiverPos.RECEIVER_POS_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.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; import static io.aeron.driver.status.SystemCounterDescriptor.SYSTEM_COUNTER_TYPE_ID;
/** /**

View file

@ -18,9 +18,9 @@ object Dependencies {
val slf4jVersion = "1.7.25" val slf4jVersion = "1.7.25"
val scalaXmlVersion = "1.0.6" val scalaXmlVersion = "1.0.6"
// check agrona version when updating this // check agrona version when updating this
val aeronVersion = "1.15.1" val aeronVersion = "1.19.1"
// needs to be inline with the aeron version // 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 nettyVersion = "3.10.6.Final"
val jacksonVersion = "2.9.9" val jacksonVersion = "2.9.9"