Em ter., 20 de out. de 2026 às 19:55, Paulo Guilherme Silva <[email protected]> escreveu:
> 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]> > --- > Recheck-request: github-robot-_ovn-kubernetes > 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
