Added extra information for handshake/connection timeout potential issues

master
Robinson 2023-12-12 13:23:51 +01:00
parent 9c2fa4b65b
commit 331f921df0
No known key found for this signature in database
GPG Key ID: 8E7DB78588BD6F5C
1 changed files with 13 additions and 1 deletions

View File

@ -38,6 +38,7 @@ import dorkbox.network.handshake.ClientConnectionDriver
import dorkbox.network.handshake.ClientHandshake
import dorkbox.network.handshake.ClientHandshakeDriver
import dorkbox.network.ping.Ping
import dorkbox.util.Sys
import org.slf4j.LoggerFactory
import java.net.Inet4Address
import java.net.Inet6Address
@ -540,10 +541,21 @@ open class Client<CONNECTION : Connection>(config: ClientConfiguration = ClientC
(config.enableIpc && (remoteAddress == null || isSelfMachine)) || (!config.enableIpc && remoteAddress == null)
// how long does the initial handshake take to connect
var handshakeTimeoutNs = TimeUnit.SECONDS.toNanos(config.connectionCloseTimeoutInSeconds.toLong()) + aeronDriver.publicationConnectionTimeoutNs() + aeronDriver.lingerNs()
val aeronTimeoutNs = aeronDriver.publicationConnectionTimeoutNs() + aeronDriver.lingerNs()
var handshakeTimeoutNs = TimeUnit.SECONDS.toNanos(config.connectionCloseTimeoutInSeconds.toLong())
if (handshakeTimeoutNs < aeronTimeoutNs) {
handshakeTimeoutNs += aeronTimeoutNs
logger.warn("Handshake timeout is less than aeron timeout, increasing timeout to ${Sys.getTimePrettyFull(handshakeTimeoutNs)} to prevent aeron timeout issues")
}
// how long before we COMPLETELY give up retrying. A '0' means try forever.
var connectionTimoutInNs = TimeUnit.SECONDS.toNanos(connectionTimeoutSec.toLong())
if (connectionTimoutInNs in 1..<handshakeTimeoutNs) {
connectionTimoutInNs = 10 * handshakeTimeoutNs
logger.warn("Connection timeout is less than handshake timeout, increasing timeout to ${Sys.getTimePrettyFull(connectionTimoutInNs)} to prevent initial connection issues")
}
if (DEBUG_CONNECTIONS) {
// connections are extremely difficult to diagnose when the connection timeout is short
connectionTimoutInNs = TimeUnit.HOURS.toNanos(1)