From e58d0d99407ef6c910c68c43de5289abe8442f31 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Wed, 1 Feb 2012 16:20:51 +0100 Subject: [PATCH] Switching to an orchestrated teardown on READ_TIMEOUT --- akka-remote/src/main/resources/reference.conf | 3 +-- akka-remote/src/main/scala/akka/remote/netty/Client.scala | 5 ++--- akka-remote/src/main/scala/akka/remote/netty/Server.scala | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/akka-remote/src/main/resources/reference.conf b/akka-remote/src/main/resources/reference.conf index ff19cefa70..1158d12295 100644 --- a/akka-remote/src/main/resources/reference.conf +++ b/akka-remote/src/main/resources/reference.conf @@ -117,8 +117,7 @@ akka { read-timeout = 0s # (O) Write inactivity period (lowest resolution is seconds) - # after which active client connection is shutdown; - # will be re-established in case of new communication requests + # after which a heartbeat is sent across the wire. # A value of 0 will turn this feature off write-timeout = 10s diff --git a/akka-remote/src/main/scala/akka/remote/netty/Client.scala b/akka-remote/src/main/scala/akka/remote/netty/Client.scala index 7c4a462774..eafd01d91a 100644 --- a/akka-remote/src/main/scala/akka/remote/netty/Client.scala +++ b/akka-remote/src/main/scala/akka/remote/netty/Client.scala @@ -259,9 +259,8 @@ class ActiveRemoteClientHandler( } e.getState match { - case READER_IDLE ⇒ e.getChannel.close() - case WRITER_IDLE ⇒ e.getChannel.write(createHeartBeat(localAddress, client.netty.settings.SecureCookie)) - case ALL_IDLE ⇒ e.getChannel.close() + case READER_IDLE | ALL_IDLE ⇒ runOnceNow { client.netty.shutdownClientConnection(remoteAddress) } + case WRITER_IDLE ⇒ e.getChannel.write(createHeartBeat(localAddress, client.netty.settings.SecureCookie)) } } diff --git a/akka-remote/src/main/scala/akka/remote/netty/Server.scala b/akka-remote/src/main/scala/akka/remote/netty/Server.scala index d0e8aafe05..83fb378a62 100644 --- a/akka-remote/src/main/scala/akka/remote/netty/Server.scala +++ b/akka-remote/src/main/scala/akka/remote/netty/Server.scala @@ -62,7 +62,7 @@ class NettyRemoteServer(val netty: NettyRemoteTransport) { val b = RemoteControlProtocol.newBuilder.setCommandType(CommandType.SHUTDOWN) b.setOrigin(RemoteProtocol.AddressProtocol.newBuilder .setSystem(netty.address.system) - .setHostname(netty.address.host.get) //FIXME Should probably be settings.host + .setHostname(netty.address.host.get) .setPort(netty.address.port.get) .build) if (settings.SecureCookie.nonEmpty)