Re: [ovs-dev] [PATCH ovn v2] ovn-controller: Add command to trigger an I-P full recompute.

2019-12-03 Thread Dumitru Ceara
On Tue, Dec 3, 2019 at 12:01 AM Han Zhou  wrote:
>
>
>
> On Mon, Dec 2, 2019 at 10:03 AM Dumitru Ceara  wrote:
> >
> > Incremental processing tries to minimize the number of times
> > ovn-controller has to fully reprocess the contents of the southbound
> > database. However, if a bug in the I-P code causes ovn-controller to
> > end up in an inconsistent state, we have no easy way to force a full
> > recalculation of the openflow entries.
> >
> > This commit adds a new command to ovn-controller, "recompute", which
> > allows users to force a full recompute of the database. It can be
> > triggered by the user in the following way:
> >
> > ovn-appctl -t ovn-controller recompute
> >
> > Reviewed-by: Daniel Alvarez 
> > Signed-off-by: Dumitru Ceara 
> >
> > ---
> > v2:
> > - Add command description to manpage (suggested by Daniel).
> > - Add Reviewed-by tag.
> > ---
> >  controller/ovn-controller.8.xml | 14 ++
> >  controller/ovn-controller.c | 14 ++
> >  2 files changed, 28 insertions(+)
> >
> > diff --git a/controller/ovn-controller.8.xml 
> > b/controller/ovn-controller.8.xml
> > index 780625f..a226802 100644
> > --- a/controller/ovn-controller.8.xml
> > +++ b/controller/ovn-controller.8.xml
> > @@ -450,6 +450,20 @@
> >
> >  Show OVN SBDB connection status for the chassis.
> >
> > +
> > +  recompute
> > +  
> > +  
> > +Trigger a full compute iteration in ovn-controller 
> > based
> > +on the contents of the Southbound database and local OVS database.
> > +  
> > +  
> > +This command is intended to use only in the event of a bug in the
> > +incremental processing engine in ovn-controller to 
> > avoid
> > +inconsistent states. It should therefore be used with care as full
> > +recomputes are cpu intensive.
> > +  
> > +  
> >
> >  
> >
> > diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
> > index c56190f..04d9dea 100644
> > --- a/controller/ovn-controller.c
> > +++ b/controller/ovn-controller.c
> > @@ -73,6 +73,7 @@ static unixctl_cb_func meter_table_list;
> >  static unixctl_cb_func group_table_list;
> >  static unixctl_cb_func inject_pkt;
> >  static unixctl_cb_func ovn_controller_conn_show;
> > +static unixctl_cb_func engine_recompute_cmd;
> >
> >  #define DEFAULT_BRIDGE_NAME "br-int"
> >  #define DEFAULT_PROBE_INTERVAL_MSEC 5000
> > @@ -1941,6 +1942,9 @@ 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,
> > + NULL);
> > +
> >  uint64_t engine_run_id = 0;
> >  bool engine_run_done = true;
> >
> > @@ -2442,3 +2446,13 @@ ovn_controller_conn_show(struct unixctl_conn *conn, 
> > int argc OVS_UNUSED,
> >  }
> >  unixctl_command_reply(conn, result);
> >  }
> > +
> > +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();
> > +unixctl_command_reply(conn, NULL);
> > +}
> > --
> > 1.8.3.1
> >
> > ___
> > dev mailing list
> > d...@openvswitch.org
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
> Thanks Dumitru for adding this handy command. I applied to master.

Thanks!

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH ovn v2] ovn-controller: Add command to trigger an I-P full recompute.

2019-12-02 Thread Han Zhou
On Mon, Dec 2, 2019 at 10:03 AM Dumitru Ceara  wrote:
>
> Incremental processing tries to minimize the number of times
> ovn-controller has to fully reprocess the contents of the southbound
> database. However, if a bug in the I-P code causes ovn-controller to
> end up in an inconsistent state, we have no easy way to force a full
> recalculation of the openflow entries.
>
> This commit adds a new command to ovn-controller, "recompute", which
> allows users to force a full recompute of the database. It can be
> triggered by the user in the following way:
>
> ovn-appctl -t ovn-controller recompute
>
> Reviewed-by: Daniel Alvarez 
> Signed-off-by: Dumitru Ceara 
>
> ---
> v2:
> - Add command description to manpage (suggested by Daniel).
> - Add Reviewed-by tag.
> ---
>  controller/ovn-controller.8.xml | 14 ++
>  controller/ovn-controller.c | 14 ++
>  2 files changed, 28 insertions(+)
>
> diff --git a/controller/ovn-controller.8.xml
b/controller/ovn-controller.8.xml
> index 780625f..a226802 100644
> --- a/controller/ovn-controller.8.xml
> +++ b/controller/ovn-controller.8.xml
> @@ -450,6 +450,20 @@
>
>  Show OVN SBDB connection status for the chassis.
>
> +
> +  recompute
> +  
> +  
> +Trigger a full compute iteration in ovn-controller
based
> +on the contents of the Southbound database and local OVS
database.
> +  
> +  
> +This command is intended to use only in the event of a bug in the
> +incremental processing engine in ovn-controller to
avoid
> +inconsistent states. It should therefore be used with care as
full
> +recomputes are cpu intensive.
> +  
> +  
>
>  
>
> diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
> index c56190f..04d9dea 100644
> --- a/controller/ovn-controller.c
> +++ b/controller/ovn-controller.c
> @@ -73,6 +73,7 @@ static unixctl_cb_func meter_table_list;
>  static unixctl_cb_func group_table_list;
>  static unixctl_cb_func inject_pkt;
>  static unixctl_cb_func ovn_controller_conn_show;
> +static unixctl_cb_func engine_recompute_cmd;
>
>  #define DEFAULT_BRIDGE_NAME "br-int"
>  #define DEFAULT_PROBE_INTERVAL_MSEC 5000
> @@ -1941,6 +1942,9 @@ 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,
> + NULL);
> +
>  uint64_t engine_run_id = 0;
>  bool engine_run_done = true;
>
> @@ -2442,3 +2446,13 @@ ovn_controller_conn_show(struct unixctl_conn
*conn, int argc OVS_UNUSED,
>  }
>  unixctl_command_reply(conn, result);
>  }
> +
> +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();
> +unixctl_command_reply(conn, NULL);
> +}
> --
> 1.8.3.1
>
> ___
> dev mailing list
> d...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Thanks Dumitru for adding this handy command. I applied to master.
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev