Skip to content

Commit

Permalink
bridge: Skip statistics update if cannot get ovsdb config.
Browse files Browse the repository at this point in the history
Commit 62c5c3e (bridge: Rate limit the statistics update.) makes
ovs try committing the statistics even if ovs failed to get ovsdb
configuration.  This causes the ovs committing the NULL transaction
pointer.

To fix this issue, this commit makes ovs skip statistics update
if it cannot get ovsdb config.

VMware-BZ: #1331308

Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
  • Loading branch information
yew011 committed Sep 29, 2014
1 parent 8dba247 commit 3109f49
Showing 1 changed file with 16 additions and 18 deletions.
34 changes: 16 additions & 18 deletions vswitchd/bridge.c
Expand Up @@ -2389,32 +2389,30 @@ bridge_run(void)
}

/* Refresh interface and mirror stats if necessary. */
if (time_msec() >= stats_timer) {
if (time_msec() >= stats_timer && cfg) {
enum ovsdb_idl_txn_status status;

/* Rate limit the update. Do not start a new update if the
* previous one is not done. */
if (!stats_txn) {
if (cfg) {
stats_txn = ovsdb_idl_txn_create(idl);
HMAP_FOR_EACH (br, node, &all_bridges) {
struct port *port;
struct mirror *m;

HMAP_FOR_EACH (port, hmap_node, &br->ports) {
struct iface *iface;

LIST_FOR_EACH (iface, port_elem, &port->ifaces) {
iface_refresh_stats(iface);
}
port_refresh_stp_stats(port);
}
HMAP_FOR_EACH (m, hmap_node, &br->mirrors) {
mirror_refresh_stats(m);
stats_txn = ovsdb_idl_txn_create(idl);
HMAP_FOR_EACH (br, node, &all_bridges) {
struct port *port;
struct mirror *m;

HMAP_FOR_EACH (port, hmap_node, &br->ports) {
struct iface *iface;

LIST_FOR_EACH (iface, port_elem, &port->ifaces) {
iface_refresh_stats(iface);
}
port_refresh_stp_stats(port);
}
HMAP_FOR_EACH (m, hmap_node, &br->mirrors) {
mirror_refresh_stats(m);
}
refresh_controller_status();
}
refresh_controller_status();
}

status = ovsdb_idl_txn_commit(stats_txn);
Expand Down

0 comments on commit 3109f49

Please sign in to comment.