ovn-northd sets the ref_chassis of the SB HA chassis groups to the chassis that claimed ports in the logical switches connected to their routers. When the first port of such a logical switch is bound to a chassis, or the last one is unbound, the reference chassis change and the update of ref_chassis, written by ovn-northd itself, triggers a full recompute of the northd engine node, as it has no handler for the SB HA_Chassis_Group input.
ovn-northd never reads ref_chassis, it only writes it, so disable the alerting for that column like it is already done for other write-only columns. Assisted-by: Claude Opus 4.8, Claude Code Signed-off-by: Paulo Guilherme Silva <[email protected]> --- northd/ovn-northd.c | 2 ++ tests/ovn-northd.at | 46 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c index b7bf310c2..8c4bd124e 100644 --- a/northd/ovn-northd.c +++ b/northd/ovn-northd.c @@ -946,6 +946,8 @@ main(int argc, char *argv[]) ovsdb_idl_omit_alert(ovnsb_idl_loop.idl, &sbrec_sb_global_col_nb_cfg); ovsdb_idl_omit_alert(ovnsb_idl_loop.idl, &sbrec_sb_global_col_nb_cfg_timestamp); + ovsdb_idl_omit_alert(ovnsb_idl_loop.idl, + &sbrec_ha_chassis_group_col_ref_chassis); for (size_t i = 0; i < SBREC_ADDRESS_SET_N_COLUMNS; i++) { ovsdb_idl_omit_alert(ovnsb_idl_loop.idl, &sbrec_address_set_columns[i]); diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at index 7a0a400c4..d26143d14 100644 --- a/tests/ovn-northd.at +++ b/tests/ovn-northd.at @@ -810,6 +810,52 @@ OVN_CLEANUP_NORTHD AT_CLEANUP ]) +OVN_FOR_EACH_NORTHD_NO_HV([ +AT_SETUP([HA_Chassis_Group ref_chassis updates - no recompute]) +ovn_start + +check ovn-sbctl chassis-add gw1 geneve 127.0.0.1 +check ovn-sbctl chassis-add gw2 geneve 127.0.0.2 +check ovn-sbctl chassis-add comp1 geneve 127.0.0.3 + +check ovn-nbctl lr-add lr0 +check ovn-nbctl lrp-add lr0 lr0-public 00:00:20:20:12:13 172.168.0.100/24 +check ovn-nbctl lrp-set-gateway-chassis lr0-public gw1 20 +check ovn-nbctl lrp-set-gateway-chassis lr0-public gw2 10 +check ovn-nbctl ls-add sw0 +check ovn-nbctl lsp-add sw0 sw0-p1 +check ovn-nbctl lrp-add lr0 lr0-sw0 00:00:20:20:12:14 10.0.0.1/24 +check ovn-nbctl --wait=sb lsp-add-router-port sw0 sw0-lr0 lr0-sw0 +wait_column "" HA_Chassis_Group ref_chassis + +comp1=$(fetch_column Chassis _uuid name=comp1) + +# Binding the first port of sw0 makes comp1 a reference chassis of the +# HA chassis group. ovn-northd writes it to the SB but must not recompute +# when the update comes back. +check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats +check ovn-sbctl lsp-bind sw0-p1 comp1 +wait_row_count nb:Logical_Switch_Port 1 name=sw0-p1 up=true +wait_column "$comp1" HA_Chassis_Group ref_chassis +check ovn-nbctl --wait=sb sync +check_engine_stats northd norecompute compute +check_engine_stats lflow norecompute compute +CHECK_NO_CHANGE_AFTER_RECOMPUTE + +# Unbinding the last port of sw0 removes comp1 from the reference chassis. +check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats +check ovn-sbctl lsp-unbind sw0-p1 +wait_row_count nb:Logical_Switch_Port 1 name=sw0-p1 up=false +wait_column "" HA_Chassis_Group ref_chassis +check ovn-nbctl --wait=sb sync +check_engine_stats northd norecompute compute +check_engine_stats lflow norecompute compute +CHECK_NO_CHANGE_AFTER_RECOMPUTE + +OVN_CLEANUP_NORTHD +AT_CLEANUP +]) + OVN_FOR_EACH_NORTHD_NO_HV([ AT_SETUP([ovn-northd pause and resume]) # By starting the backup northd paused, we ensure that the primary -- 2.34.1 -- _'Esta mensagem é direcionada apenas para os endereços constantes no cabeçalho inicial. Se você não está listado nos endereços constantes no cabeçalho, pedimos-lhe que desconsidere completamente o conteúdo dessa mensagem e cuja cópia, encaminhamento e/ou execução das ações citadas estão imediatamente anuladas e proibidas'._ * **'Apesar do Magazine Luiza tomar todas as precauções razoáveis para assegurar que nenhum vírus esteja presente nesse e-mail, a empresa não poderá aceitar a responsabilidade por quaisquer perdas ou danos causados por esse e-mail ou por seus anexos'.* _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
