The garp_rarp node was doing recompute on datapaths that are not local, this is problematic with ovn-monitor-all enabled as the whole cluster gets notifications about unrelated port bindings. This could lead to the node being cancelled on large scale deployments as there is chance that SB might be readonly when the port binding recompute is triggered.
To avoid that skip datapaths that are not local. This should prevent an issue when the port is remote and becomes local as there are only 2 conditions when that could happen, the datapath is already local in that case it will be processed by the port binding handler. In the second case the datapath is remote and becomes local when the port is bound to local chassis, in that case we care about the localnet. It follows the same semantics in the opposite case local->remote, with one exception, currently we are not removing datapath that is local during incremental processing. Fixes: 05527bd6ccdb ("controller: Extract garp_rarp to engine node.") Reported-by: Ilya Maximets <i.maxim...@ovn.org> Tested-by: Ilya Maximets <i.maxim...@ovn.org> Signed-off-by: Ales Musil <amu...@redhat.com> --- controller/ovn-controller.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c index 1365f3e65..44398812b 100644 --- a/controller/ovn-controller.c +++ b/controller/ovn-controller.c @@ -5545,7 +5545,11 @@ garp_rarp_sb_port_binding_handler(struct engine_node *node, struct local_datapath *ld = get_local_datapath( &rt_data->local_datapaths, pb->datapath->tunnel_key); - if (!ld || ld->localnet_port) { + if (!ld) { + continue; + } + + if (ld->localnet_port) { /* XXX: actually handle this incrementally. */ return EN_UNHANDLED; } @@ -5598,7 +5602,11 @@ garp_rarp_runtime_data_handler(struct engine_node *node, void *data OVS_UNUSED) struct local_datapath *ld = get_local_datapath( &rt_data->local_datapaths, tdp->dp->tunnel_key); - if (!ld || ld->localnet_port) { + if (!ld) { + continue; + } + + if (ld->localnet_port) { /* XXX: actually handle this incrementally. */ return EN_UNHANDLED; } -- 2.49.0 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev