On 1/8/26 9:32 AM, Felix Moebius via dev wrote:
> When an ovsdb raft cluster in kubernetes is restarted the individual DBs
> may get assigned different ips. The corresponding DNS entries may take a
> moment to update, such that other cluster members will still see the old
> ip address for some time.
> During that time an ovsdb server from another cluster or another server
> from the same cluster may appear under the old ip address such that the
> remaining cluster members reconnect to this ovsdb server.
> Currently they will notice that either the server id or cluster id does
> not match what they expect, but will keep the connection alive and just
> ignore messages from that connection.
> 
> Fix this by terminating connections for which we notice a mismatched
> cluster or server id to force a reconnect such that we will eventually
> reconnect to the right server once the DNS entries have caught up.
> 
> Suggested-by: Felix Huettner <[email protected]>
> Signed-off-by: Felix Moebius <[email protected]>
> ---
> v2:
> - simplified patch as suggested by Ilya
> ---
>  ovsdb/raft.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/ovsdb/raft.c b/ovsdb/raft.c
> index a5809b7e7..d549a3fb5 100644
> --- a/ovsdb/raft.c
> +++ b/ovsdb/raft.c
> @@ -1540,6 +1540,7 @@ raft_conn_receive(struct raft *raft, struct raft_conn 
> *conn,
>      if (error) {
>          char *s = ovsdb_error_to_string_free(error);
>          VLOG_INFO("%s: %s", jsonrpc_session_get_name(conn->js), s);
> +        jsonrpc_session_force_reconnect(conn->js);
>          free(s);
>          return false;
>      }
> @@ -1555,6 +1556,7 @@ raft_conn_receive(struct raft *raft, struct raft_conn 
> *conn,
>                       SID_FMT" (expected "SID_FMT")",
>                       jsonrpc_session_get_name(conn->js),
>                       SID_ARGS(&rpc->common.sid), SID_ARGS(&conn->sid));
> +        jsonrpc_session_force_reconnect(conn->js);
>          raft_rpc_uninit(rpc);
>          return false;
>      }

Thanks!  Applied and backported down to 3.3.

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to