diff mbox series

[ovs-dev,3/3] inc-proc-eng: Add inc-engine/recompute command.

Message ID 20211119155633.22719.56906.stgit@dceara.remote.csb
State Accepted
Headers show
Series Reduce number of recomputes in northd. | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/github-robot-_ovn-kubernetes fail github build: failed

Commit Message

Dumitru Ceara Nov. 19, 2021, 3:56 p.m. UTC
This will be automatically available to all incremental processing
engine clients (ovn-northd and ovn-controller).

At the same time, deprecate the ovn-controller "recompute" command.

Signed-off-by: Dumitru Ceara <dceara@redhat.com>
---
 NEWS                        |    2 ++
 controller/ovn-controller.c |    7 +++----
 lib/inc-proc-eng.c          |   20 ++++++++++++++++++++
 lib/inc-proc-eng.h          |    3 +++
 4 files changed, 28 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/NEWS b/NEWS
index 97a833a1b..5bd191bf9 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,8 @@  Post v21.09.0
     running on SmartNIC control plane CPUs.  Please refer to
     Documentation/topics/vif-plug-providers/vif-plug-providers.rst for more
     information.
+  - Added new "inc-engine/recompute" command to all incremental processing
+    engine clients (ovn-northd and ovn-controller).
 
 OVN v21.09.0 - 01 Oct 2021
 --------------------------
diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
index 61a94b3c3..d503b049a 100644
--- a/controller/ovn-controller.c
+++ b/controller/ovn-controller.c
@@ -3395,7 +3395,8 @@  main(int argc, char *argv[])
     unixctl_command_register("inject-pkt", "MICROFLOW", 1, 1, inject_pkt,
                              &pending_pkt);
 
-    unixctl_command_register("recompute", "", 0, 0, engine_recompute_cmd,
+    unixctl_command_register("recompute", "[deprecated]", 0, 0,
+                             engine_recompute_cmd,
                              NULL);
     unixctl_command_register("lflow-cache/flush", "", 0, 0,
                              lflow_cache_flush_cmd,
@@ -4145,9 +4146,7 @@  static void
 engine_recompute_cmd(struct unixctl_conn *conn OVS_UNUSED, int argc OVS_UNUSED,
                      const char *argv[] OVS_UNUSED, void *arg OVS_UNUSED)
 {
-    VLOG_INFO("User triggered force recompute.");
-    engine_set_force_recompute(true);
-    poll_immediate_wake();
+    engine_trigger_recompute();
     unixctl_command_reply(conn, NULL);
 }
 
diff --git a/lib/inc-proc-eng.c b/lib/inc-proc-eng.c
index 49a1fe2f2..2958a55e3 100644
--- a/lib/inc-proc-eng.c
+++ b/lib/inc-proc-eng.c
@@ -25,6 +25,7 @@ 
 #include "lib/util.h"
 #include "openvswitch/dynamic-string.h"
 #include "openvswitch/hmap.h"
+#include "openvswitch/poll-loop.h"
 #include "openvswitch/vlog.h"
 #include "inc-proc-eng.h"
 #include "timeval.h"
@@ -142,6 +143,15 @@  engine_dump_stats(struct unixctl_conn *conn, int argc OVS_UNUSED,
     ds_destroy(&dump);
 }
 
+static void
+engine_trigger_recompute_cmd(struct unixctl_conn *conn, int argc OVS_UNUSED,
+                             const char *argv[] OVS_UNUSED,
+                             void *arg OVS_UNUSED)
+{
+    engine_trigger_recompute();
+    unixctl_command_reply(conn, NULL);
+}
+
 void
 engine_init(struct engine_node *node, struct engine_arg *arg)
 {
@@ -160,6 +170,8 @@  engine_init(struct engine_node *node, struct engine_arg *arg)
                              engine_dump_stats, NULL);
     unixctl_command_register("inc-engine/clear-stats", "", 0, 0,
                              engine_clear_stats, NULL);
+    unixctl_command_register("inc-engine/recompute", "", 0, 0,
+                             engine_trigger_recompute_cmd, NULL);
 }
 
 void
@@ -475,3 +487,11 @@  engine_need_run(void)
     }
     return false;
 }
+
+void
+engine_trigger_recompute(void)
+{
+    VLOG_INFO("User triggered force recompute.");
+    engine_set_force_recompute(true);
+    poll_immediate_wake();
+}
diff --git a/lib/inc-proc-eng.h b/lib/inc-proc-eng.h
index 6f3918ae7..9bfab1f7c 100644
--- a/lib/inc-proc-eng.h
+++ b/lib/inc-proc-eng.h
@@ -264,6 +264,9 @@  void *engine_get_internal_data(struct engine_node *node);
 #define engine_set_node_state(node, state) \
     engine_set_node_state_at(node, state, OVS_SOURCE_LOCATOR)
 
+/* Trigger a full recompute. */
+void engine_trigger_recompute(void);
+
 struct ed_ovsdb_index {
     const char *name;
     struct ovsdb_idl_index *index;