Skip to content

model: Connecting to DBs that don't contain tables that are in the model should not be an error. #235

@dceara

Description

@dceara

https://github.com/ovn-org/libovsdb/blob/e29d8bd57b4a0590ec63a622e2c2f2533e274db6/model/model.go#L78

This should probably logged as a warning (at most) and the table should optionally be removed from the model. Otherwise it breaks all upgrade scenarios in which clients are upgraded before the database. Even worse, the client might have an external way of checking if a table actually exists on the remote server (e.g., run an ovn-nbctl list <table> command), and adapt its execution based on that information, completely avoiding to use the nonexistent table.

An example of such a scenario can be found here; the client fails to validate the schema every time it connects to a remote server, crash loops, even though it's perfectly able to function when the table is missing on the server side:

F1004 16:31:22.456301      34 ovnkube.go:131] error when trying to initialize libovsdb NB client: failed to connect to tcp:172.18.0.3:6641: database OVN_Northbound validation error (3): Mapper Error. Object type nbdb.LogicalRouter contains field LoadBalancerGroup ([]string) ovs tag load_balancer_group: Column does not exist in schema. database model contains a model for table Load_Balancer_Group that does not exist in schema. Mapper Error. Object type nbdb.LogicalSwitch contains field LoadBalancerGroup ([]string) ovs tag load_balancer_group: Column does not exist in schema

CC: @amorenoz

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions