You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sometimes when an (TCP) audit connection is open for a longer period (say 1h) the server side may terminate the connection. In such cases the client side is not informed that the socket is in fact dead. The AuditLogger does implement a reconnect logic but this only works after the first packet could not be delivered. The main problem is that out.flush() does not block until the packet was delivered (ACK) but returns after the packet was entered successfully into the OS network stack. The Socket (and the OutputStream) is only marked as broken and fails with an IOException on the next write operation after the TCP layer gives up the retransmission.
To Reproduce
Steps to reproduce the behavior:
Configure an AuditLogger with a TCP connection and send one audit message.
Ensure that the server side kills the socket eg. by setting a short IdleTimeout on the server side.
Send an audit message
Message is dropped silently and not retransmitted
Expected behavior
Audit message should not be lost in case of connection problems when using TCP.
Screenshots
Network dump when the message is retransmitted by TCP logic becaue of missing ACK. After 5 failed attempts the packet is dropped ~6 seconds later. This is not handled in the java code!
The text was updated successfully, but these errors were encountered:
Sometimes when an (TCP) audit connection is open for a longer period (say 1h) the server side may terminate the connection. In such cases the client side is not informed that the socket is in fact dead. The
AuditLogger
does implement a reconnect logic but this only works after the first packet could not be delivered. The main problem is thatout.flush()
does not block until the packet was delivered (ACK) but returns after the packet was entered successfully into the OS network stack. TheSocket
(and theOutputStream
) is only marked as broken and fails with anIOException
on the next write operation after the TCP layer gives up the retransmission.To Reproduce
Steps to reproduce the behavior:
AuditLogger
with a TCP connection and send one audit message.IdleTimeout
on the server side.Expected behavior
Audit message should not be lost in case of connection problems when using TCP.
Screenshots
Network dump when the message is retransmitted by TCP logic becaue of missing ACK. After 5 failed attempts the packet is dropped ~6 seconds later. This is not handled in the java code!
The text was updated successfully, but these errors were encountered: