From 36a7b32d790f2cee735520060a9b6221b7ae25ef Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Fri, 11 Jun 2010 14:45:24 -0700 Subject: [PATCH] Suppress ovsdb-server log messages about connections from ovs-vsctl. In the ovsdb-server log there are fairly continuous messages like these: Apr 26 11:27:55|15254|reconnect|INFO|unix:/tmp/stream-unix.31734.0: connected Apr 26 11:27:55|15255|reconnect|INFO|unix:/tmp/stream-unix.31734.0: connection dropped Apr 26 11:28:00|15256|reconnect|INFO|unix:/tmp/stream-unix.31810.0: connecting... Apr 26 11:28:00|15257|reconnect|INFO|unix:/tmp/stream-unix.31810.0: connected Apr 26 11:28:00|15258|reconnect|INFO|unix:/tmp/stream-unix.31810.0: connection dropped These just indicate that ovs-vsctl is connecting to ovsdb-server from, for example, the "vif" script. But there's no need to log all that detail; it's simply not useful. This commit suppresses it. Bug #2715. --- lib/jsonrpc.c | 6 +++++- lib/reconnect.c | 39 +++++++++++++++++++++++++++++---------- lib/reconnect.h | 2 ++ 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/lib/jsonrpc.c b/lib/jsonrpc.c index d06cdcd1e..32d34b4f1 100644 --- a/lib/jsonrpc.c +++ b/lib/jsonrpc.c @@ -700,7 +700,10 @@ jsonrpc_session_open(const char *name) } /* Creates and returns a jsonrpc_session that is initially connected to - * 'jsonrpc'. If the connection is dropped, it will not be reconnected. */ + * 'jsonrpc'. If the connection is dropped, it will not be reconnected. + * + * On the assumption that such connections are likely to be short-lived + * (e.g. from ovs-vsctl), informational logging for them is suppressed. */ struct jsonrpc_session * jsonrpc_session_open_unreliably(struct jsonrpc *jsonrpc) { @@ -708,6 +711,7 @@ jsonrpc_session_open_unreliably(struct jsonrpc *jsonrpc) s = xmalloc(sizeof *s); s->reconnect = reconnect_create(time_msec()); + reconnect_set_quiet(s->reconnect, true); reconnect_set_name(s->reconnect, jsonrpc_get_name(jsonrpc)); reconnect_set_max_tries(s->reconnect, 0); reconnect_connected(s->reconnect, time_msec()); diff --git a/lib/reconnect.c b/lib/reconnect.c index 96917beca..372c2ebdc 100644 --- a/lib/reconnect.c +++ b/lib/reconnect.c @@ -52,6 +52,7 @@ struct reconnect { int max_backoff; int probe_interval; bool passive; + enum vlog_level info; /* Used for informational messages. */ /* State. */ enum state state; @@ -98,6 +99,7 @@ reconnect_create(long long int now) fsm->max_backoff = 8000; fsm->probe_interval = 5000; fsm->passive = false; + fsm->info = VLL_INFO; fsm->state = S_VOID; fsm->state_entered = now; @@ -120,6 +122,22 @@ reconnect_destroy(struct reconnect *fsm) } } +/* If 'quiet' is true, 'fsm' will log informational messages at level VLL_DBG, + * by default keeping them out of log files. This is appropriate if the + * connection is one that is expected to be short-lived, so that the log + * messages are merely distracting. + * + * If 'quiet' is false, 'fsm' logs informational messages at level VLL_INFO. + * This is the default. + * + * This setting has no effect on the log level of debugging, warning, or error + * messages. */ +void +reconnect_set_quiet(struct reconnect *fsm, bool quiet) +{ + fsm->info = quiet ? VLL_DBG : VLL_INFO; +} + /* Returns 'fsm''s name. */ const char * reconnect_get_name(const struct reconnect *fsm) @@ -309,16 +327,17 @@ reconnect_disconnected(struct reconnect *fsm, long long int now, int error) VLOG_WARN("%s: connection dropped (%s)", fsm->name, strerror(error)); } else if (error == EOF) { - VLOG_INFO("%s: connection closed by peer", fsm->name); + VLOG(fsm->info, "%s: connection closed by peer", fsm->name); } else { - VLOG_INFO("%s: connection dropped", fsm->name); + VLOG(fsm->info, "%s: connection dropped", fsm->name); } } else if (fsm->state == S_LISTENING) { if (error > 0) { VLOG_WARN("%s: error listening for connections (%s)", fsm->name, strerror(error)); } else { - VLOG_INFO("%s: error listening for connections", fsm->name); + VLOG(fsm->info, "%s: error listening for connections", + fsm->name); } } else { const char *type = fsm->passive ? "listen" : "connection"; @@ -326,7 +345,7 @@ reconnect_disconnected(struct reconnect *fsm, long long int now, int error) VLOG_WARN("%s: %s attempt failed (%s)", fsm->name, type, strerror(error)); } else { - VLOG_INFO("%s: %s attempt timed out", fsm->name, type); + VLOG(fsm->info, "%s: %s attempt timed out", fsm->name, type); } } @@ -344,10 +363,10 @@ reconnect_disconnected(struct reconnect *fsm, long long int now, int error) fsm->backoff *= 2; } if (fsm->passive) { - VLOG_INFO("%s: waiting %.3g seconds before trying to " + VLOG(fsm->info, "%s: waiting %.3g seconds before trying to " "listen again", fsm->name, fsm->backoff / 1000.0); } else { - VLOG_INFO("%s: waiting %.3g seconds before reconnect", + VLOG(fsm->info, "%s: waiting %.3g seconds before reconnect", fsm->name, fsm->backoff / 1000.0); } } @@ -366,9 +385,9 @@ reconnect_connecting(struct reconnect *fsm, long long int now) { if (fsm->state != S_CONNECT_IN_PROGRESS) { if (fsm->passive) { - VLOG_INFO("%s: listening...", fsm->name); + VLOG(fsm->info, "%s: listening...", fsm->name); } else { - VLOG_INFO("%s: connecting...", fsm->name); + VLOG(fsm->info, "%s: connecting...", fsm->name); } reconnect_transition__(fsm, now, S_CONNECT_IN_PROGRESS); } @@ -389,7 +408,7 @@ void reconnect_listening(struct reconnect *fsm, long long int now) { if (fsm->state != S_LISTENING) { - VLOG_INFO("%s: listening...", fsm->name); + VLOG(fsm->info, "%s: listening...", fsm->name); reconnect_transition__(fsm, now, S_LISTENING); } } @@ -422,7 +441,7 @@ reconnect_connected(struct reconnect *fsm, long long int now) if (!is_connected_state(fsm->state)) { reconnect_connecting(fsm, now); - VLOG_INFO("%s: connected", fsm->name); + VLOG(fsm->info, "%s: connected", fsm->name); reconnect_transition__(fsm, now, S_ACTIVE); fsm->last_connected = now; } diff --git a/lib/reconnect.h b/lib/reconnect.h index d0790ec6f..418f3e875 100644 --- a/lib/reconnect.h +++ b/lib/reconnect.h @@ -35,6 +35,8 @@ struct reconnect *reconnect_create(long long int now); void reconnect_destroy(struct reconnect *); +void reconnect_set_quiet(struct reconnect *, bool quiet); + const char *reconnect_get_name(const struct reconnect *); void reconnect_set_name(struct reconnect *, const char *name); -- 2.43.0