On Wed, Jan 27, 2016 at 02:46:07PM -0500, Lance Richardson wrote: > A common error scenario with OVN is to attempt to use ovn-nbctl when > the OVN databases have not been created: > 1. ovn-nbctl sends "get_schema" request for OVN db to ovsdb-server. > 2. ovsdb-server fails to lookup requested db, sends error response > to ovn-nbctl. > 3. ovn-nbctl received the error response in ovsdb_idl_run(), but > takes no specific action in this case. > 4. ovn-nbctl hangs forever in IDL_S_SCHEMA_REQUESTED state (assuming > a timeout wasn't requested on the command line). > > Here is an RFC patch to start the discussion about how handling of this > particular error can be improved. > > Signed-off-by: Lance Richardson <lrich...@redhat.com> > --- > lib/ovsdb-idl.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c > index 7e84138..3f4be51 100644 > --- a/lib/ovsdb-idl.c > +++ b/lib/ovsdb-idl.c > @@ -453,6 +453,16 @@ ovsdb_idl_run(struct ovsdb_idl *idl) > ovsdb_idl_send_monitor_request(idl); > idl->state = IDL_S_MONITOR_REQUESTED; > } > + } else if (msg->type == JSONRPC_ERROR > + && idl->state == IDL_S_SCHEMA_REQUESTED > + && idl->request_id > + && json_equal(idl->request_id, msg->id)) { > + json_destroy(idl->request_id); > + idl->request_id = NULL; > + VLOG_ERR("%s: requested schema not found", > + jsonrpc_session_get_name(idl->session)); > + ovsdb_idl_destroy(idl); > + exit(EXIT_FAILURE);
I think that logging the problem is a good place to start, but the IDL definitely shouldn't kill the process. The IDL's clients include long-running daemons that can and should reasonably recover from this kind of error. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev