On Apr 01, Ilya Maximets wrote:
> On 3/12/26 4:01 PM, Lorenzo Bianconi wrote:
> > Store the user monitor condition request in pre-json format in
> > ovsdb_idl_table in order to use it in ovsdb_idl_compose_monitor_request
> > routine and create a monitor condition request based on the
> > tables/columns available in db-schema.
> > 
> > Reported-at: https://issues.redhat.com/browse/FDP-3114
> > Signed-off-by: Lorenzo Bianconi <[email protected]>
> > ---
> >  lib/ovsdb-cs.c           |  4 +++
> >  lib/ovsdb-idl-provider.h |  3 ++
> >  lib/ovsdb-idl.c          | 64 ++++++++++++++++++++++++++++++++++++++--
> >  3 files changed, 68 insertions(+), 3 deletions(-)
> > 
> 
> Hi, Lorenzo.  Thanks for working on this.  This patch seems incomplete
> though, as it only avoids setting the conditions for missing tables during
> the initial monitor request.  On the very next iteration, ovn-controller
> will call the set_conditions again and those will be passed directly to
> the ovsdb_cs_set_condition() and that cond_change request will fail.
> 
> You can see that by applying your OVN RFC patch and then run:
> 
> make -j8 sandbox SANDBOXFLAGS="--no-ovn-rbac --n-ic 0"
> [tutorial]$ cd sandbox/
> [sandbox]$ pkill -f OVN_IC_
> [sandbox]$ pkill -f OVN_Southbound
> [sandbox]$ pkill -f ovn-controller
> [sandbox]$ rm sb*
> [sandbox]$ ovsdb-tool create sb1.db ../ovn-sb-degraded.ovsschema
> [sandbox]$ ovsdb-server --detach --no-chdir --pidfile=sb1.pid \
>   -vconsole:off --log-file=sb1.log -vsyslog:off \
>   --remote=db:OVN_Southbound,SB_Global,connections \
>   --private-key=db:OVN_Southbound,SSL,private_key \
>   --certificate=db:OVN_Southbound,SSL,certificate \
>   --ca-cert=db:OVN_Southbound,SSL,ca_cert \
>   --ssl-protocols=db:OVN_Southbound,SSL,ssl_protocols \
>   --ssl-ciphers=db:OVN_Southbound,SSL,ssl_ciphers \
>   --ssl-ciphersuites=db:OVN_Southbound,SSL,ssl_ciphersuites \
>   --unixctl=sb1 --remote=punix:sb1.ovsdb sb1.db
> [sandbox]$ ovn-sbctl set-ssl $(pwd)/ovnsb-privkey.pem \
>   $(pwd)/ovnsb-cert.pem $(pwd)/pki/switchca/cacert.pem
> [sandbox]$ ovn-sbctl set-connection pssl:6642
> [i.maximets@im-t490s sandbox]$ ovn-controller -p $(pwd)/chassis-1-privkey.pem 
> \
>   -c $(pwd)/chassis-1-cert.pem -C $(pwd)/pki/switchca/cacert.pem \
>   --detach --no-chdir -vsyslog:off --log-file=ovn-controller.log \
>   --pidfile=ovn-controller.pid -vconsole:off -vjsonrpc:file:dbg
> [sandbox]$ less ovn-controller.log
> 
> Where the ovn-sb-degraded.ovsschema is a schema with the Chassis_Template_Var
> table removed.  Since jsonrpc debug logging is enabled, you'll see:
> 
> |jsonrpc|DBG|ssl:127.0.0.1:6642: send request, method="monitor_cond",
>    params=["OVN_Southbound",["monid","OVN_Southbound"],
>            {...,"Chassis_Template_Var":[{"columns":[],"where":[false]}],...], 
> id=10
> |jsonrpc|DBG|ssl:127.0.0.1:6642: received error,
>    error={"details":"no table named Chassis_Template_Var","error":"syntax 
> error"}, id=10

Hi Ilya,

thx for pointing out the issue, I will fix it in v2.

> 
> This will still be true after applying the second change as well:
>   
> https://patchwork.ozlabs.org/project/openvswitch/patch/b754631fb9acb9b985927692e7d64eaff01129ab.1773349026.git.lorenzo.bianc...@redhat.com/
> 
> What we need is to:
> 
> 1. Combine both OVS patches.

ack, I will fix it in v2.

> 
> 2. Filter the conditions inside ovsdb_idl_set_condition__ or
>    ovsdb_idl_condition_to_json, so the direct set_conditions
>    calls from the application do not set conditions for tables
>    and columns that do not exist on a server.

ack, I will fix it in v2.

> 
> 3. We may need to make sure that we're not sending the last id
>    for monitor requests in case we're dropping previously acked
>    conditions, so we'll get a full content with the 'clear'
>    flag for the new conditions and avoid having stale data.
>    Not sure if this is necessary since the database index should
>    protect us here, but may be good to do anyway.

What is the right segno ovsdb_idl_set_condition() should return if all clauses
are removed from incoming ovsdb_idl_condition condition?

Regards,
Lorenzo

> 
> Best regards, Ilya Maximets.
> 
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to