initiate new handshake after restart of receiving system, #20568
* we don't want to include the full origin address in each message, only the UID * that means that the restarted receiving system can't initate a new handshake immediately when it sees message from unknown origin * instead we inject HandshakeReq from the sending system once in a while (1 per second) which will trigger the new handshake * any messages that arrives before the HandshakeReq are dropped, but that is fine since the system was just restarted anyway * note that the injected handshake is only done for active connections, when a message is sent * also changed the UID to a Long, but there are more places in old remoting that must be changed before we actually can use a Long value fix lost first message, #20566 * the first message was sometimes dropped by the InboundHandshake stage because it came from unknown origin, i.e. the handshake had not completed * that happended because the ordinary messagage arrived before the first HandshakeReq, which may happen since we sent the HandshakeReq over the control stream * this changes so that HandshakeReq is sent over the same stream, not only on the control stream and thereby the HandshakeReq will arrive before any other message * always send HandshakeReq as first message * also when the handshake on sender side has been completed at startup * moved code from preStart to onPull
This commit is contained in:
parent
92404bc470
commit
7505393c89
17 changed files with 298 additions and 145 deletions
|
|
@ -167,7 +167,7 @@ class Decoder(
|
|||
localAddress, // FIXME: Is this needed anymore? What should we do here?
|
||||
deserializedMessage,
|
||||
senderOption, // FIXME: No need for an option, decode simply to deadLetters instead
|
||||
UniqueAddress(senderOption.get.path.address, headerBuilder.uid)) // FIXME see issue #20568
|
||||
headerBuilder.uid)
|
||||
|
||||
push(out, decoded)
|
||||
} catch {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue