ovsdb: Change the way connection duration time is reported in Manager table.
authorAndrew Evans <aevans@nicira.com>
Wed, 9 Mar 2011 18:46:57 +0000 (10:46 -0800)
committerAndrew Evans <aevans@nicira.com>
Wed, 9 Mar 2011 18:46:57 +0000 (10:46 -0800)
Commit 0b3e7a8b71 (ovsdb-server: Write manager status information to Manager
table.) attempted to provide managers with the ability to debug manager-related
connection problems, but it turns out that reporting "time_in_state" is not
very useful, because the state is constantly changing. What people really want
is the time each manager has been connected or disconnected, depending on the
current connection state.

Replace "time_in_state" key with "time_connected" and "time_disconnected"
keys. Only one exists at a time, and time is in seconds.

Bug #4833.

ovsdb/jsonrpc-server.c
ovsdb/jsonrpc-server.h
ovsdb/ovsdb-server.c

index 92228be856fb438ac7fb61203a74305ecbe60223..713c51828622955faacbc4fe78df2109cdba8748 100644 (file)
@@ -470,7 +470,10 @@ ovsdb_jsonrpc_session_get_status(const struct ovsdb_jsonrpc_remote *remote,
 
     jsonrpc_session_get_reconnect_stats(js, &rstats);
     status->state = rstats.state;
-    status->state_elapsed = rstats.state_elapsed;
+    status->conn_secs = (rstats.is_connected
+                         ? rstats.current_connection_duration
+                         : rstats.current_disconnect_duration
+                         ) / 1000;
 
     return;
 }
index e4048700156c105eb41bc43796dea4bf8ef0bdd3..691b55e2bfb04e40e5040dbf5fcfc6e18c700ca7 100644 (file)
@@ -38,7 +38,7 @@ void ovsdb_jsonrpc_server_set_remotes(struct ovsdb_jsonrpc_server *,
 struct ovsdb_jsonrpc_remote_status {
     const char *state;
     int last_error;
-    unsigned int state_elapsed;
+    unsigned int conn_secs;
     bool is_connected;
 };
 void ovsdb_jsonrpc_server_get_remote_status(
index fac78c80785c02472bd8a5e38dc425a6fe621ca5..9eb58ebf1fd758826fc98a67156912681a88e5cb 100644 (file)
@@ -495,8 +495,9 @@ update_remote_row(const struct ovsdb_row *row, struct ovsdb_txn *txn,
 
     keys[n] = xstrdup("state");
     values[n++] = xstrdup(status->state);
-    keys[n] = xstrdup("time_in_state");
-    values[n++] = xasprintf("%u", status->state_elapsed);
+    keys[n] = xstrdup(status->is_connected ? "time_connected"
+                      : "time_disconnected");
+    values[n++] = xasprintf("%u", status->conn_secs);
     if (status->last_error) {
         keys[n] = xstrdup("last_error");
         values[n++] =