mirror of
https://github.com/openvswitch/ovs
synced 2025-08-22 09:58:01 +00:00
ovsdb-server: Don't log closing session at program termination.
When ovsdb-server closes a remote connection, it logs a message about it that includes the reason. Until now this has included sessions that it closes when it exits. That meant that, when --run was used, there was a race between noticing that the subprocess exited and noticing that the session that that subprocess (presumably) had open had been closed. If it noticed the latter first, nothing was logged (because it didn't log anything if a session was closed in the ordinary way by the client). If it noticed the former first, it logged a message about closing the session itself. This is a benign race that causes no real problems--except that the tests didn't expect to see the log message from the former case and fail with errors like the following: 1826. ovsdb-server.at:92: testing truncating database log with bad transaction ... ./ovsdb-server.at:96: ovsdb-tool create db schema stderr: stdout: ./ovsdb-server.at:104: ovsdb-server --remote=punix:socket db --run="sh txnfile" --- /dev/null 2018-04-24 08:50:58.769000000 +0000 +++ /root/openvswitch-2.9.2/rpm/rpmbuild/BUILD/openvswitch-2.9.2/tests/testsuite.dir/at-groups/1826/stderr 2018-05-29 14:29:56.529257295 +0000 @@ -0,0 +1,2 @@ +2018-05-29T14:29:56Z|00001|ovsdb_jsonrpc_server|INFO|unix#0: disconnecting (removing ordinals database due to server termination) +2018-05-29T14:29:56Z|00002|ovsdb_jsonrpc_server|INFO|unix#0: disconnecting (removing _Server database due to server termination) This fixes the race. This particular log message isn't too useful since it's pretty obvious that ovsdb-server is closing those sessions, since after all it's exiting! Reported-by: Sanket Sudake <sanket@infracloud.io> Reported-at: https://mail.openvswitch.org/pipermail/ovs-discuss/2018-May/046840.html Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Numan Siddique <nusiddiq@redhat.com>
This commit is contained in:
parent
0e12201039
commit
aa02ac6408
@ -173,8 +173,9 @@ ovsdb_jsonrpc_server_add_db(struct ovsdb_jsonrpc_server *svr, struct ovsdb *db)
|
||||
|
||||
/* Removes 'db' from the set of databases served out by 'svr'.
|
||||
*
|
||||
* 'comment' should be a human-readable reason for removing the database. This
|
||||
* function frees it. */
|
||||
* 'comment' should be a human-readable reason for removing the database, for
|
||||
* use in log messages, or NULL to suppress logging. This function frees
|
||||
* it. */
|
||||
void
|
||||
ovsdb_jsonrpc_server_remove_db(struct ovsdb_jsonrpc_server *svr,
|
||||
struct ovsdb *db, char *comment)
|
||||
@ -339,7 +340,7 @@ ovsdb_jsonrpc_server_free_remote_status(
|
||||
|
||||
/* Makes all of the JSON-RPC sessions managed by 'svr' disconnect. (They
|
||||
* will then generally reconnect.). Uses 'comment' as a human-readable comment
|
||||
* for logging. Frees 'comment'.
|
||||
* for logging (it may be NULL to suppress logging). Frees 'comment'.
|
||||
*
|
||||
* If 'force' is true, disconnects all sessions. Otherwise, disconnects only
|
||||
* sesions that aren't database change aware. */
|
||||
@ -644,7 +645,8 @@ ovsdb_jsonrpc_session_close_all(struct ovsdb_jsonrpc_remote *remote)
|
||||
|
||||
/* Makes all of the JSON-RPC sessions managed by 'remote' disconnect. (They
|
||||
* will then generally reconnect.). 'comment' should be a human-readable
|
||||
* explanation of the reason for disconnection, for use in log messages.
|
||||
* explanation of the reason for disconnection, for use in log messages, or
|
||||
* NULL to suppress logging.
|
||||
*
|
||||
* If 'force' is true, disconnects all sessions. Otherwise, disconnects only
|
||||
* sesions that aren't database change aware. */
|
||||
@ -657,7 +659,7 @@ ovsdb_jsonrpc_session_reconnect_all(struct ovsdb_jsonrpc_remote *remote,
|
||||
LIST_FOR_EACH_SAFE (s, next, node, &remote->sessions) {
|
||||
if (force || !s->db_change_aware) {
|
||||
jsonrpc_session_force_reconnect(s->js);
|
||||
if (jsonrpc_session_is_connected(s->js)) {
|
||||
if (comment && jsonrpc_session_is_connected(s->js)) {
|
||||
VLOG_INFO("%s: disconnecting (%s)",
|
||||
jsonrpc_session_get_name(s->js), comment);
|
||||
}
|
||||
|
@ -459,9 +459,7 @@ main(int argc, char *argv[])
|
||||
|
||||
SHASH_FOR_EACH_SAFE(node, next, &all_dbs) {
|
||||
struct db *db = node->data;
|
||||
close_db(&server_config, db,
|
||||
xasprintf("removing %s database due to server termination",
|
||||
db->db->name));
|
||||
close_db(&server_config, db, NULL);
|
||||
shash_delete(&all_dbs, node);
|
||||
}
|
||||
ovsdb_jsonrpc_server_destroy(jsonrpc);
|
||||
|
Loading…
x
Reference in New Issue
Block a user