On Mon, Aug 1, 2016 at 5:00 PM, Andy Zhou <[email protected]> wrote:
> > > On Mon, Aug 1, 2016 at 2:41 PM, Andy Zhou <[email protected]> wrote: > >> From: Mario Cabrera <[email protected]> >> >> 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. >> >> s/disitition/distinction/ > >> Signed-off-by: Mario Cabrera <[email protected]> >> --- >> 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); >> >> Acked-by: Andy Zhou <[email protected]> > There is a bit of duplicated code in process_notification(), I plan to > fold the following changes when commit: > > diff --git a/ovsdb/replication.c b/ovsdb/replication.c > index 81211bd..f11af70 100644 > --- a/ovsdb/replication.c > +++ b/ovsdb/replication.c > @@ -455,15 +455,16 @@ process_notification(struct json *table_updates, > struct ovsdb *database) > } > } > > - if (!error){ > - /* Commit transaction. */ > - error = ovsdb_txn_commit(txn, false); > - if (error) { > - ovsdb_error_assert(error); > - disconnect_remote_server(); > - } > - } else { > + if (error) { > ovsdb_txn_abort(txn); > + goto error; > + } > + > + /* Commit transaction. */ > + error = ovsdb_txn_commit(txn, false); > + > +error: > + if (error) { > ovsdb_error_assert(error); > disconnect_remote_server(); > } > > Pushed to master. _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
