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

Reply via email to