[ovs-dev] [PATCH v3 1/2] ovn-controller: Fix busy loop when sb disconnected.

Ben Pfaff blp at ovn.org
Tue Apr 16 17:43:49 UTC 2019


On Wed, Apr 03, 2019 at 05:49:12PM -0700, Han Zhou wrote:
> From: Han Zhou <hzhou8 at ebay.com>
> 
> In the main loop, if the SB DB is disconnected when there is a pending
> transaction, there can be busy loop causing 100% CPU of ovn-controller,
> until SB DB is connected again.
> 
> The root cause is that when a transaction is pending, ovsdb_idl_loop_run()
> will return NULL for ovnsb_idl_txn, and chassis_run() returns NULL when
> ovnsb_idl_txn is NULL, so the condition if (br_int && chassis) is not
> satisfied and so ofctrl_run() is not executed in the main loop. If there
> is any message pending from br-int.mgmt, such as OFPTYPE_BARRIER_REPLY or
> OFPTYPE_ECHO_REQUEST, the main loop will be woken up again and again
> because those messages are not processed because ofctrl_run() is not
> invoked.
> 
> This patch fixes the problem by moving ofctrl_run() above and run it
> whenever br_int is not NULL, and not care about chassis because this
> function doesn't depend on it.
> 
> It also moves out sbrec_chassis_set_nb_cfg() from the "if (ovs_idl_txn)"
> just to avoid adding more indentation of the whole block to avoid >79
> line length.
> 
> Note: the changes of this patch is better to be shown with "-w" because
> most of them are indent changes.
> 
> Acked-by: Numan Siddique <nusiddiq at redhat.com>
> Signed-off-by: Han Zhou <hzhou8 at ebay.com>
> ---
> 
> Notes:
>     v2->v3: fix >79 line found by 0-day robot

This has a patch reject against current master, so if it's still
relevant would you mind rebasing and reposting?

Thanks,

Ben.


More information about the dev mailing list