From: Mario Cabrera <mario.cabr...@hpe.com> Currently disconnecting from the replicator server means closing the jsonrpc connection and destroying the monitored table names and blacklisted table names.
This patch makes a distition between disconnecting from the remote server, applicable when the replication incurs in an error, and destroying the remote server info, applicable when ovsdb-server exits gracefully. Signed-off-by: Mario Cabrera <mario.cabr...@hpe.com> --- ovsdb/ovsdb-server.c | 2 +- ovsdb/replication.c | 17 +++++++++++++---- ovsdb/replication.h | 1 + 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c index 1c6ddca..bb65637 100644 --- a/ovsdb/ovsdb-server.c +++ b/ovsdb/ovsdb-server.c @@ -371,7 +371,7 @@ main(int argc, char *argv[]) sset_destroy(&remotes); sset_destroy(&db_filenames); unixctl_server_destroy(unixctl); - disconnect_remote_server(); + destroy_remote_server(); if (run_process && process_exited(run_process)) { int status = process_status(run_process); diff --git a/ovsdb/replication.c b/ovsdb/replication.c index 463fa0a..81211bd 100644 --- a/ovsdb/replication.c +++ b/ovsdb/replication.c @@ -142,6 +142,14 @@ void disconnect_remote_server(void) { jsonrpc_close(rpc); + sset_clear(&monitored_tables); + sset_clear(&tables_blacklist); +} + +void +destroy_remote_server(void) +{ + jsonrpc_close(rpc); sset_destroy(&monitored_tables); sset_destroy(&tables_blacklist); @@ -452,15 +460,13 @@ process_notification(struct json *table_updates, struct ovsdb *database) error = ovsdb_txn_commit(txn, false); if (error) { ovsdb_error_assert(error); - sset_clear(&monitored_tables); + disconnect_remote_server(); } } else { ovsdb_txn_abort(txn); ovsdb_error_assert(error); - sset_clear(&monitored_tables); + disconnect_remote_server(); } - - ovsdb_error_destroy(error); } static struct ovsdb_error * @@ -500,6 +506,9 @@ process_table_update(struct json *table_update, const char *table_name, error = execute_update(txn, node->name, table, new); } } + if (error) { + break; + } } return error; } diff --git a/ovsdb/replication.h b/ovsdb/replication.h index 93ac22b..1b2d3e4 100644 --- a/ovsdb/replication.h +++ b/ovsdb/replication.h @@ -37,6 +37,7 @@ const char *get_remote_ovsdb_server(void); void set_tables_blacklist(const char *blacklist); struct sset get_tables_blacklist(void); void disconnect_remote_server(void); +void destroy_remote_server(void); const struct db *find_db(const struct shash *all_dbs, const char *db_name); void replication_usage(void); -- 1.9.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev