On Mon, Sep 23, 2024 at 4:31 PM Dumitru Ceara <[email protected]> wrote:
> On 9/10/24 15:29, Ales Musil wrote: > > The recompute was requested when the commit failed, however the > > engine run might have happened later than expected. This was caused > > by poll_block() call, which was waiting for any event in the loop. > > Make sure that the engine runs right away by calling > > poll_immediate_wake() which ensures that the poll_block() returns > > right away without any further waiting. > > > > Reported-at: https://issues.redhat.com/browse/FDP-753 > > Signed-off-by: Ales Musil <[email protected]> > > --- > > Hi Ales, > > Thanks for the fix! > Hi Dumitru, thank you for the review. > I wonder if we shouldn't just do this every time > engine_set_force_recompute(true) is called. That is, call > poll_immediate_wake() inside the engine_set_force_recompute() function. > > By the look there's no case in whicha forced recompute is requested > where we have a reason to wait instead of immediately waking up to do > the computation. > > We could also repurpose the engine_trigger_recompute() function. > > What do you think? > After some offline discussion there is v2 which should be more explicit about what is happening. > > Thanks, > Dumitru > > > controller/ovn-controller.c | 1 + > > northd/ovn-northd.c | 2 ++ > > 2 files changed, 3 insertions(+) > > > > diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c > > index c48667887..8b8ff3a92 100644 > > --- a/controller/ovn-controller.c > > +++ b/controller/ovn-controller.c > > @@ -5816,6 +5816,7 @@ main(int argc, char *argv[]) > > if (!ovsdb_idl_loop_commit_and_wait(&ovnsb_idl_loop)) { > > VLOG_INFO("OVNSB commit failed, force recompute next > time."); > > engine_set_force_recompute(true); > > + poll_immediate_wake(); > > } > > > > int ovs_txn_status = > ovsdb_idl_loop_commit_and_wait(&ovs_idl_loop); > > diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c > > index d71114f35..b3c80f012 100644 > > --- a/northd/ovn-northd.c > > +++ b/northd/ovn-northd.c > > @@ -992,12 +992,14 @@ main(int argc, char *argv[]) > > VLOG_INFO("OVNNB commit failed, " > > "force recompute next time."); > > eng_ctx.recompute = true; > > + poll_immediate_wake(); > > } > > > > if (!ovsdb_idl_loop_commit_and_wait(&ovnsb_idl_loop)) { > > VLOG_INFO("OVNSB commit failed, " > > "force recompute next time."); > > eng_ctx.recompute = true; > > + poll_immediate_wake(); > > } > > run_memory_trimmer(ovnnb_idl_loop.idl, activity); > > } else { > > Thanks, Ales -- Ales Musil Senior Software Engineer - OVN Core Red Hat EMEA <https://www.redhat.com> [email protected] <https://red.ht/sig> _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
