ctdb-takeover: Do not call ctdb_announce_vnn_iface() for updateip
authorMartin Schwenke <martin@meltin.net>
Thu, 27 Jul 2017 05:04:30 +0000 (15:04 +1000)
committerAmitay Isaacs <amitay@samba.org>
Thu, 10 Aug 2017 04:43:13 +0000 (06:43 +0200)
commiteb66ef2e3bb7eaf719e2a122483466634a1002e4
treedf0a62cf5b0863dc4482c2377b2401afbeafa465
parent769e889e0e617b503a3a7574b4cd2f0bf9909065
ctdb-takeover: Do not call ctdb_announce_vnn_iface() for updateip

This causes any tracked connections for the IP address to be lost.

When doing a takeip, the server sends a tickle ACK to the client, the
client responds with a valid ACK and the server's TCP stack responds
with a reset because the connection does not exist.  However, in the
updateip, case the connection *does* exist, so the tickle *does not*
cause the connection to be reset.

ctdb_announce_vnn_iface() clears the list of tracked TCP connections
while sending the tickle ACKs.  So, if there are no reconnects as in
the takeip case, then the list of connections is simply lost.

The "updateip" event in the 10.interface event script already sends
gratuitous ARPs and tickles connections in both directions.  This
ensures that traffic continues after packets may have been dropped
when the script temporarily blocks traffic to the IP address.

All of this means that the call to ctdb_announce_vnn_iface() can just
be deleted.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/server/ctdb_takeover.c