pekko/akka-remote/src/main/scala/akka/remote
Patrik Nordwall 32f0936d17 Fix ResendUnfulfillableException after transport failure detection, #23010
Reproducer (TransportFailSpec):

* watch from first to second node, i.e. sys msg with seq number 1
* trigger transport failure detection to tear down the connection
* the bug was that on the second node the ReliableDeliverySupervisor
  was stopped because the send buffer had not been used on that side,
  but that removed the receive buffer entry
* later, after gating elapsed another watch from first to second node,
  i.e. sys msg with seq number 2
* when that watch msg was received on the second node the receive buffer
  had been cleared and therefore it thought that seq number 1 was missing,
  and therefore sent nack to the first node
* when first node received the nack it thrown
  IllegalStateException: Error encountered while processing system message
    acknowledgement buffer: [2 {2}] ack: ACK[2, {1, 0}]
  caused by: ResendUnfulfillableException: Unable to fulfill resend request since
    negatively acknowledged payload is no longer in buffer

This was fixed by not stopping the ReliableDeliverySupervisor so that the
receive buffer was preserved.

Not necessary for fixing the issue, but the following config settings were adjusted:
* increased transport-failure-detector timeout to avoid tearing down the
  connection too early
* reduce the quarantine-after-silence to cleanup ReliableDeliverySupervisor
  actors earlier
2017-06-09 14:19:14 +02:00
..
artery Return large buffers to the bufferPool #22723 (#22729) 2017-04-19 08:55:16 +02:00
routing extended copyright into 2017 2017-01-04 17:37:15 +01:00
security/provider Drop the exec bit on non-executable files 2017-05-23 16:06:27 +02:00
serialization Protobuf serializers for remote deployment #22332 2017-03-16 15:12:35 +01:00
transport Replace FileInputStream and FileOutputStream, #22733 2017-04-19 12:05:19 -05:00
AckedDelivery.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
AddressUidExtension.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
BoundAddressesExtension.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
DeadlineFailureDetector.scala remove deprecated constructor in DeadlineFailureDetector, #21423 2017-01-24 13:35:52 +01:00
DefaultFailureDetectorRegistry.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
Endpoint.scala Fix ResendUnfulfillableException after transport failure detection, #23010 2017-06-09 14:19:14 +02:00
FailureDetector.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
FailureDetectorRegistry.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
MessageSerializer.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
PhiAccrualFailureDetector.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
RemoteActorRefProvider.scala removed unnecessary new keywords 2017-01-13 12:35:05 +03:00
RemoteDaemon.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
RemoteDeployer.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
RemoteDeploymentWatcher.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
RemoteMetricsExtension.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
RemoteSettings.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
RemoteTransport.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
RemoteWatcher.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00
Remoting.scala Remove use of deprecated Scala features #22581 2017-03-27 19:05:54 +03:00
RemotingLifecycleEvent.scala remove deprecated constructor in DeadlineFailureDetector, #21423 2017-01-24 13:35:52 +01:00
UniqueAddress.scala extended copyright into 2017 2017-01-04 17:37:15 +01:00