This commit gives responsibility for syncing lflow_refs to the en-lflow-sync engine node. Currently it only handles lflow_refs from the en-lflow node, but it could potentially handle lflow_refs from any input node.
To accomplish this, all en-lflow input handlers mostly work the same. The difference is that instead of calling lflow_ref_sync_lflows(), they push their lflow_ref to a vector. The en-lflow-sync node then iterates over this vector and calls lflow_ref_sync_lflows() on all of the lflow_refs. In order to ensure that all unlinked lflow_ref_nodes have their corresponding lflows removed from the lflow_table, we no longer short-circuit when a call to lflow_ref_sync_lflows() fails. We allow all of the calls to complete, and afterwards if there were any failures, we fall back to a recompute. This way, when the recompute happens, there is no chance of attempting to sync unlinked lflows with the southbound database. This commit also adds an awkward call to clear datapath groups at the beginning of lflow_table_sync_to_sb(). This is necessary because when we fall back to a recompute from the incremental case, the dp_groups need to be cleared out. A more natural place for this would be in the en-lflow-sync run() function, but the internals of the lflow_table are not accessible from the en-lflow.c file. The next commit will separate the dp_groups from the lflow_table. Signed-off-by: Mark Michelson <mmich...@redhat.com> --- northd/en-lflow.c | 123 +++++++++++++++----------------- northd/en-lflow.h | 12 +++- northd/lflow-mgr.c | 40 +++++------ northd/lflow-mgr.h | 10 +-- northd/northd.c | 167 +++++++++++--------------------------------- northd/northd.h | 19 +++-- tests/ovn-northd.at | 125 ++++++++++++++++++++++++++++++++- 7 files changed, 262 insertions(+), 234 deletions(-) diff --git a/northd/en-lflow.c b/northd/en-lflow.c index aa92755cc..2e8f1ef60 100644 --- a/northd/en-lflow.c +++ b/northd/en-lflow.c @@ -144,13 +144,12 @@ lflow_northd_handler(struct engine_node *node, if (!lflow_handle_northd_port_changes(eng_ctx->ovnsb_idl_txn, &northd_data->trk_data.trk_lsps, &lflow_input, - lflow_data->lflow_table)) { + lflow_data)) { return EN_UNHANDLED; } - if (!lflow_handle_northd_lb_changes( - eng_ctx->ovnsb_idl_txn, &northd_data->trk_data.trk_lbs, - &lflow_input, lflow_data->lflow_table)) { + if (!lflow_handle_northd_lb_changes(&northd_data->trk_data.trk_lbs, + &lflow_input, lflow_data)) { return EN_UNHANDLED; } @@ -183,15 +182,13 @@ lflow_lr_stateful_handler(struct engine_node *node, void *data) return EN_UNHANDLED; } - const struct engine_context *eng_ctx = engine_get_context(); struct lflow_data *lflow_data = data; struct lflow_input lflow_input; lflow_get_input_data(node, &lflow_input); - if (!lflow_handle_lr_stateful_changes(eng_ctx->ovnsb_idl_txn, - &lr_sful_data->trk_data, + if (!lflow_handle_lr_stateful_changes(&lr_sful_data->trk_data, &lflow_input, - lflow_data->lflow_table)) { + lflow_data)) { return EN_UNHANDLED; } @@ -208,15 +205,13 @@ lflow_ls_stateful_handler(struct engine_node *node, void *data) return EN_UNHANDLED; } - const struct engine_context *eng_ctx = engine_get_context(); struct lflow_data *lflow_data = data; struct lflow_input lflow_input; lflow_get_input_data(node, &lflow_input); - if (!lflow_handle_ls_stateful_changes(eng_ctx->ovnsb_idl_txn, - &ls_sful_data->trk_data, + if (!lflow_handle_ls_stateful_changes(&ls_sful_data->trk_data, &lflow_input, - lflow_data->lflow_table)) { + lflow_data)) { return EN_UNHANDLED; } @@ -229,37 +224,16 @@ lflow_multicast_igmp_handler(struct engine_node *node, void *data) struct multicast_igmp_data *mcast_igmp_data = engine_get_input_data("multicast_igmp", node); - const struct engine_context *eng_ctx = engine_get_context(); struct lflow_data *lflow_data = data; struct lflow_input lflow_input; lflow_get_input_data(node, &lflow_input); - if (!lflow_ref_resync_flows(mcast_igmp_data->lflow_ref, - lflow_data->lflow_table, - eng_ctx->ovnsb_idl_txn, - lflow_input.ls_datapaths, - lflow_input.lr_datapaths, - lflow_input.ovn_internal_version_changed, - lflow_input.sbrec_logical_flow_table, - lflow_input.sbrec_logical_dp_group_table)) { - return EN_UNHANDLED; - } - + lflow_ref_unlink_lflows(mcast_igmp_data->lflow_ref); build_igmp_lflows(&mcast_igmp_data->igmp_groups, &lflow_input.ls_datapaths->datapaths, lflow_data->lflow_table, mcast_igmp_data->lflow_ref); - - if (!lflow_ref_sync_lflows(mcast_igmp_data->lflow_ref, - lflow_data->lflow_table, - eng_ctx->ovnsb_idl_txn, - lflow_input.ls_datapaths, - lflow_input.lr_datapaths, - lflow_input.ovn_internal_version_changed, - lflow_input.sbrec_logical_flow_table, - lflow_input.sbrec_logical_dp_group_table)) { - return EN_UNHANDLED; - } + vector_push(&lflow_data->lflow_refs, &mcast_igmp_data->lflow_ref); return EN_HANDLED_UPDATED; } @@ -276,7 +250,6 @@ lflow_group_ecmp_route_change_handler(struct engine_node *node, return EN_UNHANDLED; } - const struct engine_context *eng_ctx = engine_get_context(); struct lflow_data *lflow_data = data; struct lflow_input lflow_input; @@ -291,17 +264,7 @@ lflow_group_ecmp_route_change_handler(struct engine_node *node, &group_ecmp_route_data->trk_data.deleted_datapath_routes) { route_node = hmapx_node->data; lflow_ref_unlink_lflows(route_node->lflow_ref); - - bool handled = lflow_ref_sync_lflows( - route_node->lflow_ref, lflow_data->lflow_table, - eng_ctx->ovnsb_idl_txn, lflow_input.ls_datapaths, - lflow_input.lr_datapaths, - lflow_input.ovn_internal_version_changed, - lflow_input.sbrec_logical_flow_table, - lflow_input.sbrec_logical_dp_group_table); - if (!handled) { - return EN_UNHANDLED; - } + vector_push(&lflow_data->lflow_refs, &route_node->lflow_ref); } /* Now we handle created or updated route nodes. */ @@ -313,17 +276,7 @@ lflow_group_ecmp_route_change_handler(struct engine_node *node, build_route_data_flows_for_lrouter( route_node->od, lflow_data->lflow_table, route_node, lflow_input.bfd_ports); - - bool handled = lflow_ref_sync_lflows( - route_node->lflow_ref, lflow_data->lflow_table, - eng_ctx->ovnsb_idl_txn, lflow_input.ls_datapaths, - lflow_input.lr_datapaths, - lflow_input.ovn_internal_version_changed, - lflow_input.sbrec_logical_flow_table, - lflow_input.sbrec_logical_dp_group_table); - if (!handled) { - return EN_UNHANDLED; - } + vector_push(&lflow_data->lflow_refs, &route_node->lflow_ref); } return EN_HANDLED_UPDATED; @@ -335,6 +288,7 @@ void *en_lflow_init(struct engine_node *node OVS_UNUSED, struct lflow_data *data = xmalloc(sizeof *data); data->lflow_table = lflow_table_alloc(); lflow_table_init(data->lflow_table); + data->lflow_refs = VECTOR_EMPTY_INITIALIZER(struct lflow_ref *); return data; } @@ -348,6 +302,7 @@ void en_lflow_clear_tracked_data(void *data_) { struct lflow_data *data = data_; data->handled_incrementally = true; + vector_clear(&data->lflow_refs); } static bool @@ -417,11 +372,16 @@ sb_lflows_sync_for_datapaths( static void lflow_sync_data_init(struct lflow_sync_data *lflow_sync, - const struct sbrec_logical_flow_table *sb_lflow_table) + const struct sbrec_logical_flow_table *sb_lflow_table, + const struct lflow_data *lflow_data) { hmap_init(&lflow_sync->sb_lflows.valid); hmap_init(&lflow_sync->sb_lflows.to_delete); + if (lflow_data) { + lflow_table_clear_dp_groups(lflow_data->lflow_table); + } + if (!sb_lflow_table) { return; } @@ -479,7 +439,7 @@ en_lflow_sync_run(struct engine_node *node, void *data) struct lflow_sync_data *lflow_sync = data; lflow_sync_data_destroy(lflow_sync); - lflow_sync_data_init(lflow_sync, sb_lflow_table); + lflow_sync_data_init(lflow_sync, sb_lflow_table, lflow_data); stopwatch_start(LFLOWS_TO_SB_STOPWATCH_NAME, time_msec()); @@ -507,7 +467,7 @@ en_lflow_sync_init(struct engine_node *node OVS_UNUSED, struct engine_arg *arg OVS_UNUSED) { struct lflow_sync_data *lflow_sync = xzalloc(sizeof *lflow_sync); - lflow_sync_data_init(lflow_sync, NULL); + lflow_sync_data_init(lflow_sync, NULL, NULL); return lflow_sync; } @@ -521,15 +481,48 @@ en_lflow_sync_cleanup(void *data) enum engine_input_handler_result lflow_sync_lflow_handler(struct engine_node *node, void *data OVS_UNUSED) { - const struct lflow_data *lflow_data = engine_get_input_data("lflow", node); + const struct sbrec_logical_flow_table *sb_lflow_table = + EN_OVSDB_GET(engine_get_input("SB_logical_flow", node)); + /* XXX The lflow table is currently not treated as const because it + * contains mutable logical datapath groups. A future commit will + * separate the dp groups from the lflow_table so that this can be + * treated as const. + */ + struct lflow_data *lflow_data = + engine_get_input_data("lflow", node); + const struct northd_data *northd = + engine_get_input_data("northd", node); + struct ed_type_global_config *global_config = + engine_get_input_data("global_config", node); + const struct sbrec_logical_dp_group_table *sb_dp_group_table = + EN_OVSDB_GET(engine_get_input("SB_logical_dp_group", node)); + const struct engine_context *eng_ctx = engine_get_context(); /* The en-lflow node's handlers sync flows based on lflow_refs. If they * were all able to handle the changes incrementally, then there's no need * for en-lflow-sync to perform a sync of the entire lflow table. */ - if (lflow_data->handled_incrementally) { - return EN_HANDLED_UPDATED; - } else { + if (!lflow_data->handled_incrementally) { return EN_UNHANDLED; } + + struct lflow_ref *lflow_ref; + bool handled = true; + VECTOR_FOR_EACH (&lflow_data->lflow_refs, lflow_ref) { + /* We need to be sure to attempt to sync all lflow_refs, even if + * one fails. The reason is that if there are any unlinked + * lflow_ref_nodes whose lflows are no longer referenced by + * any other lflow_ref_nodes, then those lflows need to be + * removed from the lflow table. Otherwise, when we fall back + * to recompute, we can attempt to sync non-existent lflows with + * the southbound database + */ + handled &= lflow_ref_sync_lflows( + lflow_ref, lflow_data->lflow_table, eng_ctx->ovnsb_idl_txn, + &northd->ls_datapaths, &northd->lr_datapaths, + global_config->ovn_internal_version_changed, sb_lflow_table, + sb_dp_group_table); + } + + return handled ? EN_HANDLED_UPDATED : EN_UNHANDLED; } diff --git a/northd/en-lflow.h b/northd/en-lflow.h index c6e6672c6..a057f9193 100644 --- a/northd/en-lflow.h +++ b/northd/en-lflow.h @@ -15,8 +15,16 @@ struct sb_lflows; struct lflow_data { struct lflow_table *lflow_table; - /* This is set true if all of en-lflow's input handlers - * were able to handle northd's changes incrementally. + /* When en-lflow incrementally processes lflow_refs, it rebuilds + * the flows and adds the lflow_refs to this vector so that the + * en-lflow-sync node can resync the flows with the southbound + * database + */ + struct vector lflow_refs; + /* Not all incremental changes in en-lflow affect the lflow_refs + * vector above. So we use this as a way of knowing for certain + * if en-lflow was able to handle all changes incrementally in + * nodes that take en-lflow as an input. */ bool handled_incrementally; }; diff --git a/northd/lflow-mgr.c b/northd/lflow-mgr.c index aa8e60478..cb5511235 100644 --- a/northd/lflow-mgr.c +++ b/northd/lflow-mgr.c @@ -285,6 +285,9 @@ lflow_table_sync_to_sb(struct lflow_table *lflow_table, fast_hmap_size_for(&lflows_temp, lflow_table->max_seen_lflow_size); + ovn_dp_groups_clear(&lflow_table->ls_dp_groups); + ovn_dp_groups_clear(&lflow_table->lr_dp_groups); + /* Push changes to the Logical_Flow table to database. */ struct sb_lflow *sb_lflow; HMAP_FOR_EACH (sb_lflow, hmap_node, &sb_lflows->valid) { @@ -620,23 +623,6 @@ lflow_ref_unlink_lflows(struct lflow_ref *lflow_ref) } } -bool -lflow_ref_resync_flows(struct lflow_ref *lflow_ref, - struct lflow_table *lflow_table, - struct ovsdb_idl_txn *ovnsb_txn, - const struct ovn_datapaths *ls_datapaths, - const struct ovn_datapaths *lr_datapaths, - bool ovn_internal_version_changed, - const struct sbrec_logical_flow_table *sbflow_table, - const struct sbrec_logical_dp_group_table *dpgrp_table) -{ - lflow_ref_unlink_lflows(lflow_ref); - return lflow_ref_sync_lflows__(lflow_ref, lflow_table, ovnsb_txn, - ls_datapaths, lr_datapaths, - ovn_internal_version_changed, sbflow_table, - dpgrp_table); -} - bool lflow_ref_sync_lflows(struct lflow_ref *lflow_ref, struct lflow_table *lflow_table, @@ -1280,6 +1266,7 @@ lflow_ref_sync_lflows__(struct lflow_ref *lflow_ref, { struct lflow_ref_node *lrn; struct ovn_lflow *lflow; + bool handled = true; HMAP_FOR_EACH_SAFE (lrn, ref_node, &lflow_ref->lflow_ref_nodes) { lflow = lrn->lflow; const struct sbrec_logical_flow *sblflow = @@ -1305,10 +1292,9 @@ lflow_ref_sync_lflows__(struct lflow_ref *lflow_ref, if (!sync_lflow_to_sb(lflow, ovnsb_txn, dp_groups, datapaths, ovn_internal_version_changed, sblflow, dpgrp_table)) { - return false; + handled = false; } } - if (!lrn->linked) { lflow_ref_node_destroy(lrn); @@ -1322,7 +1308,7 @@ lflow_ref_sync_lflows__(struct lflow_ref *lflow_ref, } } - return true; + return handled; } /* Used for the datapath reference counting for a given 'struct ovn_lflow'. @@ -1425,3 +1411,17 @@ lflow_ref_node_destroy(struct lflow_ref_node *lrn) } free(lrn); } + +void +lflow_table_clear_dp_groups(const struct lflow_table *lflow_table) +{ + /* This function should only be called in the case where the + * reference counts of dp_groups do not matter. For instance, + * if all dp_groups have been cleared/destroyed or are about + * to be cleared/destroyed + */ + struct ovn_lflow *lflow; + HMAP_FOR_EACH (lflow, hmap_node, &lflow_table->entries) { + lflow->dpg = NULL; + } +} diff --git a/northd/lflow-mgr.h b/northd/lflow-mgr.h index 4e8aace07..f3f16f8f2 100644 --- a/northd/lflow-mgr.h +++ b/northd/lflow-mgr.h @@ -63,14 +63,6 @@ struct lflow_ref *lflow_ref_create(void); void lflow_ref_destroy(struct lflow_ref *); void lflow_ref_clear(struct lflow_ref *lflow_ref); void lflow_ref_unlink_lflows(struct lflow_ref *); -bool lflow_ref_resync_flows(struct lflow_ref *, - struct lflow_table *lflow_table, - struct ovsdb_idl_txn *ovnsb_txn, - const struct ovn_datapaths *ls_datapaths, - const struct ovn_datapaths *lr_datapaths, - bool ovn_internal_version_changed, - const struct sbrec_logical_flow_table *, - const struct sbrec_logical_dp_group_table *); bool lflow_ref_sync_lflows(struct lflow_ref *, struct lflow_table *lflow_table, struct ovsdb_idl_txn *ovnsb_txn, @@ -228,4 +220,6 @@ dec_ovn_dp_group_ref(struct hmap *dp_groups, struct ovn_dp_group *dpg) } } +void lflow_table_clear_dp_groups(const struct lflow_table *); + #endif /* LFLOW_MGR_H */ diff --git a/northd/northd.c b/northd/northd.c index 3016be949..39323aa5f 100644 --- a/northd/northd.c +++ b/northd/northd.c @@ -58,6 +58,7 @@ #include "en-port-binding-logical-router-port.h" #include "en-port-binding-chassisredirect.h" #include "en-port-binding-mirror.h" +#include "en-lflow.h" #include "lib/ovn-parallel-hmap.h" #include "ovn/actions.h" #include "ovn/features.h" @@ -17887,24 +17888,20 @@ bool lflow_handle_northd_port_changes(struct ovsdb_idl_txn *ovnsb_txn, struct tracked_ovn_ports *trk_lsps, struct lflow_input *lflow_input, - struct lflow_table *lflows) + struct lflow_data *lflow_data) { struct hmapx_node *hmapx_node; struct ovn_port *op; + struct lflow_table *lflows = lflow_data->lflow_table; + HMAPX_FOR_EACH (hmapx_node, &trk_lsps->deleted) { op = hmapx_node->data; /* Make sure 'op' is an lsp and not lrp. */ ovs_assert(op->nbsp); - bool handled = lflow_ref_resync_flows( - op->lflow_ref, lflows, ovnsb_txn, lflow_input->ls_datapaths, - lflow_input->lr_datapaths, - lflow_input->ovn_internal_version_changed, - lflow_input->sbrec_logical_flow_table, - lflow_input->sbrec_logical_dp_group_table); - if (!handled) { - return false; - } + lflow_ref_unlink_lflows(op->lflow_ref); + vector_push(&lflow_data->lflow_refs, &op->lflow_ref); + /* No need to update SB multicast groups, thanks to weak * references. */ } @@ -17924,36 +17921,18 @@ lflow_handle_northd_port_changes(struct ovsdb_idl_txn *ovnsb_txn, lflow_input->meter_groups, &match, &actions, lflows); - /* Sync the new flows to SB. */ - bool handled = lflow_ref_sync_lflows( - op->lflow_ref, lflows, ovnsb_txn, lflow_input->ls_datapaths, - lflow_input->lr_datapaths, - lflow_input->ovn_internal_version_changed, - lflow_input->sbrec_logical_flow_table, - lflow_input->sbrec_logical_dp_group_table); - if (handled) { - /* Now regenerate the stateful lflows for 'op' */ - /* Clear old lflows. */ - lflow_ref_unlink_lflows(op->stateful_lflow_ref); - build_lbnat_lflows_iterate_by_lsp(op, - lflow_input->lr_stateful_table, - &match, &actions, lflows); - handled = lflow_ref_sync_lflows( - op->stateful_lflow_ref, lflows, ovnsb_txn, - lflow_input->ls_datapaths, - lflow_input->lr_datapaths, - lflow_input->ovn_internal_version_changed, - lflow_input->sbrec_logical_flow_table, - lflow_input->sbrec_logical_dp_group_table); - } + vector_push(&lflow_data->lflow_refs, &op->lflow_ref); + /* Now regenerate the stateful lflows for 'op' */ + /* Clear old lflows. */ + lflow_ref_unlink_lflows(op->stateful_lflow_ref); + build_lbnat_lflows_iterate_by_lsp(op, + lflow_input->lr_stateful_table, + &match, &actions, lflows); + vector_push(&lflow_data->lflow_refs, &op->stateful_lflow_ref); ds_destroy(&match); ds_destroy(&actions); - if (!handled) { - return false; - } - /* SB port_binding is not deleted, so don't update SB multicast * groups. */ } @@ -17980,34 +17959,16 @@ lflow_handle_northd_port_changes(struct ovsdb_idl_txn *ovnsb_txn, lflow_input->meter_groups, &match, &actions, lflows); - /* Sync the newly added flows to SB. */ - bool handled = lflow_ref_sync_lflows( - op->lflow_ref, lflows, ovnsb_txn, lflow_input->ls_datapaths, - lflow_input->lr_datapaths, - lflow_input->ovn_internal_version_changed, - lflow_input->sbrec_logical_flow_table, - lflow_input->sbrec_logical_dp_group_table); - if (handled) { - /* Now generate the stateful lflows for 'op' */ - build_lbnat_lflows_iterate_by_lsp(op, - lflow_input->lr_stateful_table, - &match, &actions, lflows); - handled = lflow_ref_sync_lflows( - op->stateful_lflow_ref, lflows, ovnsb_txn, - lflow_input->ls_datapaths, - lflow_input->lr_datapaths, - lflow_input->ovn_internal_version_changed, - lflow_input->sbrec_logical_flow_table, - lflow_input->sbrec_logical_dp_group_table); - } + vector_push(&lflow_data->lflow_refs, &op->lflow_ref); + /* Now generate the stateful lflows for 'op' */ + build_lbnat_lflows_iterate_by_lsp(op, + lflow_input->lr_stateful_table, + &match, &actions, lflows); + vector_push(&lflow_data->lflow_refs, &op->stateful_lflow_ref); ds_destroy(&match); ds_destroy(&actions); - if (!handled) { - return false; - } - /* Update SB multicast groups for the new port. */ if (!sbmc_flood) { sbmc_flood = create_sb_multicast_group(ovnsb_txn, @@ -18037,22 +17998,18 @@ lflow_handle_northd_port_changes(struct ovsdb_idl_txn *ovnsb_txn, } bool -lflow_handle_northd_lb_changes(struct ovsdb_idl_txn *ovnsb_txn, - struct tracked_lbs *trk_lbs, +lflow_handle_northd_lb_changes(struct tracked_lbs *trk_lbs, struct lflow_input *lflow_input, - struct lflow_table *lflows) + struct lflow_data *lflow_data) { struct ovn_lb_datapaths *lb_dps; struct hmapx_node *hmapx_node; + struct lflow_table *lflows = lflow_data->lflow_table; HMAPX_FOR_EACH (hmapx_node, &trk_lbs->deleted) { lb_dps = hmapx_node->data; - lflow_ref_resync_flows( - lb_dps->lflow_ref, lflows, ovnsb_txn, lflow_input->ls_datapaths, - lflow_input->lr_datapaths, - lflow_input->ovn_internal_version_changed, - lflow_input->sbrec_logical_flow_table, - lflow_input->sbrec_logical_dp_group_table); + lflow_ref_unlink_lflows(lb_dps->lflow_ref); + vector_push(&lflow_data->lflow_refs, &lb_dps->lflow_ref); } HMAPX_FOR_EACH (hmapx_node, &trk_lbs->crupdated) { @@ -18086,32 +18043,23 @@ lflow_handle_northd_lb_changes(struct ovsdb_idl_txn *ovnsb_txn, ds_destroy(&match); ds_destroy(&actions); - /* Sync the new flows to SB. */ - bool handled = lflow_ref_sync_lflows( - lb_dps->lflow_ref, lflows, ovnsb_txn, lflow_input->ls_datapaths, - lflow_input->lr_datapaths, - lflow_input->ovn_internal_version_changed, - lflow_input->sbrec_logical_flow_table, - lflow_input->sbrec_logical_dp_group_table); - if (!handled) { - return false; - } + vector_push(&lflow_data->lflow_refs, &lb_dps->lflow_ref); } return true; } bool -lflow_handle_lr_stateful_changes(struct ovsdb_idl_txn *ovnsb_txn, - struct lr_stateful_tracked_data *trk_data, - struct lflow_input *lflow_input, - struct lflow_table *lflows) +lflow_handle_lr_stateful_changes(struct lr_stateful_tracked_data *trk_data, + struct lflow_input *lflow_input, + struct lflow_data *lflow_data) { struct lr_stateful_record *lr_stateful_rec; struct ds actions = DS_EMPTY_INITIALIZER; struct ds match = DS_EMPTY_INITIALIZER; struct hmapx_node *hmapx_node; bool handled = true; + struct lflow_table *lflows = lflow_data->lflow_table; HMAPX_FOR_EACH (hmapx_node, &trk_data->crupdated) { lr_stateful_rec = hmapx_node->data; @@ -18125,16 +18073,7 @@ lflow_handle_lr_stateful_changes(struct ovsdb_idl_txn *ovnsb_txn, lflow_input->meter_groups, lflow_input->features); - /* Sync the new flows to SB. */ - handled = lflow_ref_sync_lflows( - lr_stateful_rec->lflow_ref, lflows, ovnsb_txn, - lflow_input->ls_datapaths, lflow_input->lr_datapaths, - lflow_input->ovn_internal_version_changed, - lflow_input->sbrec_logical_flow_table, - lflow_input->sbrec_logical_dp_group_table); - if (!handled) { - goto exit; - } + vector_push(&lflow_data->lflow_refs, &lr_stateful_rec->lflow_ref); const struct ovn_datapath *od = ovn_datapaths_find_by_index(lflow_input->lr_datapaths, @@ -18150,15 +18089,7 @@ lflow_handle_lr_stateful_changes(struct ovsdb_idl_txn *ovnsb_txn, &match, &actions, lflows); - handled = lflow_ref_sync_lflows( - op->stateful_lflow_ref, lflows, ovnsb_txn, - lflow_input->ls_datapaths, lflow_input->lr_datapaths, - lflow_input->ovn_internal_version_changed, - lflow_input->sbrec_logical_flow_table, - lflow_input->sbrec_logical_dp_group_table); - if (!handled) { - goto exit; - } + vector_push(&lflow_data->lflow_refs, &op->stateful_lflow_ref); if (op->peer && op->peer->nbsp) { lflow_ref_unlink_lflows(op->peer->stateful_lflow_ref); @@ -18167,20 +18098,12 @@ lflow_handle_lr_stateful_changes(struct ovsdb_idl_txn *ovnsb_txn, op->peer, lflow_input->lr_stateful_table, &match, &actions, lflows); - handled = lflow_ref_sync_lflows( - op->peer->stateful_lflow_ref, lflows, ovnsb_txn, - lflow_input->ls_datapaths, lflow_input->lr_datapaths, - lflow_input->ovn_internal_version_changed, - lflow_input->sbrec_logical_flow_table, - lflow_input->sbrec_logical_dp_group_table); - if (!handled) { - goto exit; - } + vector_push(&lflow_data->lflow_refs, + &op->peer->stateful_lflow_ref); } } } -exit: ds_destroy(&match); ds_destroy(&actions); @@ -18188,12 +18111,12 @@ exit: } bool -lflow_handle_ls_stateful_changes(struct ovsdb_idl_txn *ovnsb_txn, - struct ls_stateful_tracked_data *trk_data, - struct lflow_input *lflow_input, - struct lflow_table *lflows) +lflow_handle_ls_stateful_changes(struct ls_stateful_tracked_data *trk_data, + struct lflow_input *lflow_input, + struct lflow_data *lflow_data) { struct hmapx_node *hmapx_node; + struct lflow_table *lflows = lflow_data->lflow_table; HMAPX_FOR_EACH (hmapx_node, &trk_data->crupdated) { struct ls_stateful_record *ls_stateful_rec = hmapx_node->data; @@ -18214,17 +18137,7 @@ lflow_handle_ls_stateful_changes(struct ovsdb_idl_txn *ovnsb_txn, lflows, lflow_input->sbrec_acl_id_table); - /* Sync the new flows to SB. */ - bool handled = lflow_ref_sync_lflows( - ls_stateful_rec->lflow_ref, lflows, ovnsb_txn, - lflow_input->ls_datapaths, - lflow_input->lr_datapaths, - lflow_input->ovn_internal_version_changed, - lflow_input->sbrec_logical_flow_table, - lflow_input->sbrec_logical_dp_group_table); - if (!handled) { - return false; - } + vector_push(&lflow_data->lflow_refs, &ls_stateful_rec->lflow_ref); } return true; diff --git a/northd/northd.h b/northd/northd.h index 3de8fc17a..23c2fad49 100644 --- a/northd/northd.h +++ b/northd/northd.h @@ -866,23 +866,20 @@ void build_route_data_flows_for_lrouter( const struct group_ecmp_datapath *route_node, const struct sset *bfd_ports); - +struct lflow_data; bool lflow_handle_northd_port_changes(struct ovsdb_idl_txn *ovnsb_txn, struct tracked_ovn_ports *, struct lflow_input *, - struct lflow_table *lflows); -bool lflow_handle_northd_lb_changes(struct ovsdb_idl_txn *ovnsb_txn, - struct tracked_lbs *, + struct lflow_data *lflow_data); +bool lflow_handle_northd_lb_changes(struct tracked_lbs *, struct lflow_input *, - struct lflow_table *lflows); -bool lflow_handle_lr_stateful_changes(struct ovsdb_idl_txn *, - struct lr_stateful_tracked_data *, + struct lflow_data *lflow_data); +bool lflow_handle_lr_stateful_changes(struct lr_stateful_tracked_data *, struct lflow_input *, - struct lflow_table *lflows); -bool lflow_handle_ls_stateful_changes(struct ovsdb_idl_txn *, - struct ls_stateful_tracked_data *, + struct lflow_data *lflow_data); +bool lflow_handle_ls_stateful_changes(struct ls_stateful_tracked_data *, struct lflow_input *, - struct lflow_table *lflows); + struct lflow_data *lflow_data); bool northd_handle_sb_port_binding_changes( const struct sbrec_port_binding_table *, struct hmap *ls_ports, struct hmap *lr_ports); diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at index f334698dd..baf0b7244 100644 --- a/tests/ovn-northd.at +++ b/tests/ovn-northd.at @@ -3995,6 +3995,7 @@ wait_row_count bfd 1 logical_port=r0-sw3 detect_mult=5 dst_ip=192.168.3.2 \ check_engine_stats northd norecompute nocompute check_engine_stats bfd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats northd_output norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats @@ -4010,6 +4011,7 @@ wait_row_count bfd 1 logical_port=r0-sw1 min_rx=1000 min_tx=1000 detect_mult=100 check_engine_stats northd norecompute nocompute check_engine_stats bfd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats northd_output norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats @@ -4022,6 +4024,7 @@ check_engine_stats northd recompute nocompute check_engine_stats bfd recompute nocompute check_engine_stats routes recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats northd_output norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats @@ -4038,6 +4041,7 @@ check_engine_stats northd recompute nocompute check_engine_stats bfd recompute nocompute check_engine_stats routes recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats northd_output norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats @@ -4050,6 +4054,7 @@ check_engine_stats northd recompute nocompute check_engine_stats bfd recompute nocompute check_engine_stats route_policies recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats northd_output norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats @@ -4085,6 +4090,7 @@ check_engine_stats northd recompute nocompute check_engine_stats bfd recompute nocompute check_engine_stats routes recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats northd_output norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats @@ -4100,6 +4106,7 @@ check_engine_stats northd recompute nocompute check_engine_stats bfd recompute nocompute check_engine_stats route_policies recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats northd_output norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats @@ -11498,6 +11505,7 @@ check ovn-nbctl --wait=sb lb-add lb1 10.0.0.10:80 10.0.0.3:80 check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE(1) check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats @@ -11507,6 +11515,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11516,6 +11525,7 @@ check_engine_stats lb_data recompute nocompute check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11525,6 +11535,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats @@ -11536,6 +11547,7 @@ check_engine_stats lb_data recompute nocompute check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11546,6 +11558,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11555,6 +11568,7 @@ check_engine_stats lb_data recompute nocompute check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11564,6 +11578,7 @@ check_engine_stats lb_data recompute nocompute check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11573,6 +11588,7 @@ check_engine_stats lb_data recompute nocompute check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11582,6 +11598,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE(1) @@ -11592,6 +11609,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE(1) @@ -11606,6 +11624,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute # Any change to load balancer health check should also result in full recompute @@ -11615,6 +11634,7 @@ check ovn-nbctl --wait=sb set load_balancer_health_check . options:foo=bar1 check_engine_stats lb_data norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute # Delete the health check from the load balancer. northd engine node should do a full recompute. @@ -11624,6 +11644,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats @@ -11639,6 +11660,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd recompute compute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute # Associate lb1 to sw0. There should be no recompute of northd engine node @@ -11653,6 +11675,7 @@ check_engine_stats lr_stateful norecompute compute check_engine_stats sync_to_sb_lb norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE((1)) # Modify the backend of the lb1 vip @@ -11663,6 +11686,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE(1) @@ -11674,6 +11698,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE(1) @@ -11685,6 +11710,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE(1) @@ -11696,6 +11722,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE(1) @@ -11707,6 +11734,7 @@ check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats ls_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE(1) @@ -11719,6 +11747,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11730,6 +11759,7 @@ check ovn-nbctl --wait=sb ls-lb-del sw0 lb1 check_engine_stats lb_data norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11740,6 +11770,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11750,6 +11781,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11760,6 +11792,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11770,6 +11803,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11780,6 +11814,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11789,6 +11824,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11798,6 +11834,7 @@ lbg1_uuid=$(ovn-nbctl --wait=sb create load_balancer_group name=lbg1) check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lflow norecompute nocompute +check_engine_stats lflow_sync norecompute nocompute check_engine_stats sync_to_sb_lb norecompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats @@ -11811,6 +11848,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11820,6 +11858,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute # Add back lb to the lbg1 group @@ -11828,6 +11867,7 @@ check ovn-nbctl --wait=sb add load_balancer_group . load_Balancer $lb1_uuid check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11838,6 +11878,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute # Update lb and this should not result in northd recompute @@ -11848,6 +11889,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute # Modify the backend of the lb1 vip @@ -11858,6 +11900,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11869,6 +11912,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11880,6 +11924,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11891,6 +11936,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11899,6 +11945,7 @@ check ovn-nbctl --wait=sb clear logical_switch sw0 load_balancer_group check_engine_stats lb_data norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute compute check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats @@ -11907,6 +11954,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11917,6 +11965,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11927,6 +11976,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11937,6 +11987,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11947,6 +11998,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11956,6 +12008,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11967,6 +12020,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -11977,6 +12031,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb compute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12001,6 +12056,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute nocompute +check_engine_stats lflow_sync norecompute nocompute check_engine_stats sync_to_sb_lb norecompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12011,6 +12067,7 @@ check_engine_stats northd norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12021,6 +12078,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12030,6 +12088,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12040,6 +12099,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12050,6 +12110,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12060,6 +12121,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12069,6 +12131,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12079,6 +12142,7 @@ check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats ls_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12091,6 +12155,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12103,6 +12168,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats ls_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12112,6 +12178,7 @@ check_engine_stats lb_data norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lr_stateful recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12325,6 +12392,7 @@ check ovn-nbctl --wait=sb ls-lb-add sw0 lb1 check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12334,6 +12402,7 @@ check ovn-nbctl --wait=sb clear load_balancer . vips check_engine_stats lb_data norecompute compute check_engine_stats northd norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12342,6 +12411,7 @@ check ovn-nbctl --wait=sb lb-del lb1 check_engine_stats lb_data norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats sync_to_sb_lb recompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12360,6 +12430,7 @@ check ovn-nbctl --wait=sb lb-add lb2 10.0.0.10:80 10.0.0.3:80 check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb ls-lb-add sw0 lb1 check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE lb_lflow_uuid=$(fetch_column Logical_flow _uuid match='"ct.new && ip4.dst == 10.0.0.10 && ct_tcp.dst == 80"') @@ -12374,6 +12445,7 @@ AT_CHECK([test "$lb_lflow_dpgrp" = ""]) check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb ls-lb-add sw1 lb2 check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE lb_lflow_dp=$(ovn-sbctl --bare --columns logical_datapath list logical_flow $lb_lflow_uuid) @@ -12385,6 +12457,7 @@ AT_CHECK([test "$lb_lflow_dpgrp" != ""]) check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb set load_balancer lb1 options:bar=foo check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE # Clear the SB:Logical_Flow.logical_dp_groups column of all the @@ -12397,7 +12470,12 @@ done check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb set load_balancer lb1 options:foo=bar -check_engine_stats lflow recompute nocompute +check_engine_stats lflow norecompute compute +# 99.9% of the time, lflow and lflow_sync have the same result when +# it comes to recompute and compute. Messing with southbound logical +# flow datapath groups are the one case where lflow will compute but +# lflow_sync will need to recompute. +check_engine_stats lflow_sync recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE lb_lflow_uuid=$(fetch_column Logical_flow _uuid match='"ct.new && ip4.dst == 10.0.0.10 && ct_tcp.dst == 80"') @@ -12405,6 +12483,7 @@ lb_lflow_uuid=$(fetch_column Logical_flow _uuid match='"ct.new && ip4.dst == 10. check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb clear load_balancer lb2 vips check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE lb_lflow_dp=$(ovn-sbctl --bare --columns logical_datapath list logical_flow $lb_lflow_uuid) @@ -12431,6 +12510,7 @@ check ovn-nbctl ls-lb-add sw4 lb2 check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb ls-lb-add sw5 lb2 check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE lb_lflow_dp=$(ovn-sbctl --bare --columns logical_datapath list logical_flow $lb_lflow_uuid) @@ -12462,6 +12542,7 @@ echo "dpgrp_dps - $dpgrp_dps" check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb clear load_balancer lb2 vips check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE lb_lflow_dpgrp=$(ovn-sbctl --bare --columns logical_dp_group list logical_flow $lb_lflow_uuid) @@ -12496,6 +12577,7 @@ check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl ls-lb-add sw0 lb3 check ovn-nbctl --wait=sb ls-lb-add sw1 lb3 check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE lb_lflow_uuid=$(fetch_column Logical_flow _uuid match='"ct.new && ip4.dst == 10.0.0.10 && ct_tcp.dst == 80"') @@ -12521,6 +12603,7 @@ AT_CHECK([echo $dpgrp_dps | grep $sw5_uuid], [0], [ignore]) check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb clear load_balancer lb1 vips check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE lb_lflow_dp=$(ovn-sbctl --bare --columns logical_datapath list logical_flow $lb_lflow_uuid) @@ -12547,6 +12630,7 @@ AT_CHECK([echo $dpgrp_dps | grep $sw5_uuid], [0], [ignore]) check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb clear load_balancer lb3 vips check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE lb_lflow_dp=$(ovn-sbctl --bare --columns logical_datapath list logical_flow $lb_lflow_uuid) @@ -12593,6 +12677,7 @@ check_engine_stats lr_stateful recompute nocompute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE # Adding a logical router port should result in recompute @@ -12607,6 +12692,7 @@ check_engine_stats lr_stateful recompute nocompute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE check ovn-nbctl lsp-add sw0 sw0-lr0 @@ -12620,6 +12706,7 @@ check_engine_stats lr_stateful recompute nocompute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE check ovn-nbctl ls-add public @@ -12647,6 +12734,7 @@ check_engine_stats lr_stateful recompute nocompute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE # Do checks for NATs. @@ -12657,6 +12745,7 @@ check ovn-nbctl --wait=sb lr-nat-add lr0 dnat_and_snat 172.168.0.110 10.0.0.4 check_engine_stats northd norecompute compute check_engine_stats lr_nat norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12667,6 +12756,7 @@ check ovn-nbctl --wait=sb set NAT . options:foo=bar check_engine_stats northd norecompute compute check_engine_stats lr_nat norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12678,6 +12768,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_nat norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12689,6 +12780,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_nat norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12700,6 +12792,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_nat norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12711,6 +12804,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_nat norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12723,6 +12817,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_nat norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12743,6 +12838,7 @@ check_engine_stats lr_stateful norecompute compute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE # lflow engine should not recompute even if the nat ip 172.168.0.150 @@ -12755,6 +12851,7 @@ check_engine_stats lr_stateful norecompute compute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE # lflow engine should not recompute even if the deleted nat ip 172.168.0.150 @@ -12767,6 +12864,7 @@ check_engine_stats lr_stateful norecompute compute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE # lflow engine should not recompute even if the deleted nat ip 172.168.0.140 @@ -12779,6 +12877,7 @@ check_engine_stats lr_stateful norecompute compute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE # Delete the NAT @@ -12788,6 +12887,7 @@ check_engine_stats northd norecompute compute check_engine_stats lr_nat norecompute compute check_engine_stats lr_stateful norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -12801,6 +12901,7 @@ check_engine_stats lr_stateful recompute nocompute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats @@ -12811,6 +12912,7 @@ check_engine_stats lr_stateful recompute nocompute check_engine_stats sync_to_sb_pb recompute nocompute check_engine_stats sync_to_sb_lb recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE OVN_CLEANUP([hv1]) @@ -12969,6 +13071,7 @@ check ovn-nbctl --wait=sb set NB_Global . options:foo=bar check_engine_stats global_config norecompute compute check_engine_stats northd norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats @@ -12978,6 +13081,7 @@ check ovn-nbctl --wait=sb sync check_engine_stats global_config recompute compute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE # Clears an nb option and checks that recomputes were triggered @@ -12992,6 +13096,7 @@ clear_nb_option() { check_engine_stats global_config recompute compute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute + check_engine_stats lflow_sync recompute nocompute local retval=1 if [ "$add_back" == "true" ]; then @@ -13012,6 +13117,7 @@ check ovn-nbctl --wait=sb set NB_Global . options:ignore_chassis_features=true check_engine_stats global_config recompute compute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute clear_nb_option ignore_chassis_features false @@ -13023,6 +13129,7 @@ set_nb_option_lflow_recompute() { check_engine_stats global_config norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute + check_engine_stats lflow_sync recompute nocompute check_engine_stats mac_binding_aging recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE } @@ -13034,6 +13141,7 @@ clear_nb_option_lflow_recompute() { check_engine_stats global_config norecompute compute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute + check_engine_stats lflow_sync recompute nocompute check_engine_stats mac_binding_aging recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE } @@ -13075,6 +13183,7 @@ check ovn-nbctl --wait=sb sync check_engine_stats global_config recompute compute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-sbctl chassis-add ch2 geneve 127.0.0.2 @@ -13082,6 +13191,7 @@ check ovn-nbctl --wait=sb sync check_engine_stats global_config recompute compute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute AT_CHECK([ovn-nbctl get NB_Global . options:max_tunid | \ sed s/":"//g | sed s/\"//g], [0], [16711680 @@ -13093,6 +13203,7 @@ check ovn-nbctl --wait=sb sync check_engine_stats global_config recompute compute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-sbctl set encap . type=vxlan @@ -13100,6 +13211,7 @@ check ovn-nbctl --wait=sb sync check_engine_stats global_config recompute compute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute AT_CHECK([ovn-nbctl get NB_Global . options:max_tunid | \ sed s/":"//g | sed s/\"//g], [0], [4095 @@ -13113,6 +13225,7 @@ check_engine_stats mac_binding_aging recompute nocompute check_engine_stats fdb_aging recompute nocompute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-sbctl set chassis . other_config:ct-commit-to-zone=true @@ -13122,6 +13235,7 @@ check_engine_stats mac_binding_aging recompute nocompute check_engine_stats fdb_aging recompute nocompute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute AT_CLEANUP @@ -13138,6 +13252,7 @@ check_row_count nb:Sampling_App 1 check_engine_stats sampling_app recompute nocompute check_engine_stats northd recompute nocompute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute check_engine_stats global_config recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE @@ -17377,48 +17492,56 @@ check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb lsp-attach-mirror lport1 mirror_lport check_engine_stats northd recompute compute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb lsp-detach-mirror lport1 mirror_lport check_engine_stats northd recompute compute check_engine_stats lflow recompute nocompute +check_engine_stats lflow_sync recompute nocompute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb lsp-attach-mirror lport1 mirror_local check_engine_stats northd norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb lsp-detach-mirror lport1 mirror_local check_engine_stats northd norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb lsp-attach-mirror lport1 mirror_gre check_engine_stats northd norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb lsp-detach-mirror lport1 mirror_gre check_engine_stats northd norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb lsp-attach-mirror lport1 mirror_erspan check_engine_stats northd norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats check ovn-nbctl --wait=sb lsp-detach-mirror lport1 mirror_erspan check_engine_stats northd norecompute compute check_engine_stats lflow norecompute compute +check_engine_stats lflow_sync norecompute compute CHECK_NO_CHANGE_AFTER_RECOMPUTE AT_CLEANUP -- 2.47.0 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev