On 11/14/24 10:41 PM, Ilya Maximets wrote:
> On 11/6/24 21:10, Rosemarie O'Riorden wrote:
>> ovn-controller crashed when connected to an empty local db, forcing the user
>> to
>> initialize a local db before starting the controller daemon. With this fix,
>> the
>> controller will no longer crash in this case, but instead keep running and
>> wait
>> until the database is initialized to do anything else.
>>
>> Reported-at: https://issues.redhat.com/browse/FDP-715
>> Signed-off-by: Rosemarie O'Riorden <[email protected]>
>> ---
Hi Rosemarie,
>> v2:
>> - Add Reported-at tag.
>> - Syntax and style fixes.
>> - Change macro used in test to OVS_WAIT_FOR_OUTPUT instead of AT_CHECK.
>> - Remove unwanted line deletion.
>> ---
>> controller/chassis.c | 3 +++
>> controller/ovn-controller.c | 8 ++++----
>> tests/ovn-controller.at | 25 +++++++++++++++++++++++++
>> 3 files changed, 32 insertions(+), 4 deletions(-)
>>
>> diff --git a/controller/chassis.c b/controller/chassis.c
>> index 2991a0af3..b2eefd58a 100644
>> --- a/controller/chassis.c
>> +++ b/controller/chassis.c
>> @@ -1016,6 +1016,9 @@ store_chassis_index_if_needed(
>> {
>> const struct ovsrec_open_vswitch *cfg =
>> ovsrec_open_vswitch_table_first(ovs_table);
>> + if (!cfg) {
>> + return;
>> + }
>> const char *chassis_id = get_ovs_chassis_id(ovs_table);
>>
>> char *idx_key = xasprintf(CHASSIS_IDX_PREFIX "%s", chassis_id);
>> diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
>> index c48667887..1e987e630 100644
>> --- a/controller/ovn-controller.c
>> +++ b/controller/ovn-controller.c
>> @@ -5434,6 +5434,8 @@ main(int argc, char *argv[])
>> ovsrec_open_vswitch_table_get(ovs_idl_loop.idl);
>> const struct ovsrec_bridge *br_int = NULL;
>> const struct ovsrec_datapath *br_int_dp = NULL;
>> + const struct ovsrec_open_vswitch *cfg =
>> + ovsrec_open_vswitch_table_first(ovs_table);
>> process_br_int(ovs_idl_txn, bridge_table, ovs_table, &br_int,
>> ovsrec_server_has_datapath_table(ovs_idl_loop.idl)
>> ? &br_int_dp
>> @@ -5445,9 +5447,7 @@ main(int argc, char *argv[])
>> br_int_remote.probe_interval);
>>
>> /* Enable ACL matching for double tagged traffic. */
>> - if (ovs_idl_txn) {
>> - const struct ovsrec_open_vswitch *cfg =
>> - ovsrec_open_vswitch_table_first(ovs_table);
>> + if (ovs_idl_txn && cfg) {
>> int vlan_limit = smap_get_int(
>> &cfg->other_config, "vlan-limit", -1);
>> if (vlan_limit != 0) {
>> @@ -5463,7 +5463,7 @@ main(int argc, char *argv[])
>> }
>>
>> if (ovsdb_idl_has_ever_connected(ovnsb_idl_loop.idl) &&
>> - northd_version_match) {
>> + northd_version_match && cfg) {
>>
>> /* Unconditionally remove all deleted lflows from the lflow
>> * cache.
>> diff --git a/tests/ovn-controller.at b/tests/ovn-controller.at
>> index a2e451880..82ed5d0f1 100644
>> --- a/tests/ovn-controller.at
>> +++ b/tests/ovn-controller.at
>> @@ -3419,3 +3419,28 @@ AT_CHECK([test $(grep -c "HANDLER_MESSAGE"
>> hv1/ovn-controller.log) -ge 1])
>>
>> OVN_CLEANUP([hv1])
>> AT_CLEANUP
>> +
>> +AT_SETUP([ovn-controller - qwerty Start controller with empty db])
>
> Leftover from testing --------^^^^^^
> I suppose, can be removed while applying.
>
> With that,
>
> Acked-by: Ilya Maximets <[email protected]>
>
I fixed up the test name and applied the patch to main, 24.09 and 24.03.
Thanks Rosemarie and Ilya!
Regards,
Dumitru
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev