[ovs-dev] [PATCH 2/2] ovsdb-idl: Add coverage counters for ovsdb commit return statuses.

Ryan Wilson wryan at nicira.com
Fri May 30 00:25:14 UTC 2014


Signed-off-by: Ryan Wilson <wryan at nicira.com>
---
 lib/ovsdb-idl.c |   28 +++++++++++++++++++++++++---
 1 file changed, 25 insertions(+), 3 deletions(-)

diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c
index 7556b7f..d6b9326 100644
--- a/lib/ovsdb-idl.c
+++ b/lib/ovsdb-idl.c
@@ -23,6 +23,7 @@
 #include <stdlib.h>
 
 #include "bitmap.h"
+#include "coverage.h"
 #include "dynamic-string.h"
 #include "fatal-signal.h"
 #include "json.h"
@@ -37,6 +38,15 @@
 
 VLOG_DEFINE_THIS_MODULE(ovsdb_idl);
 
+COVERAGE_DEFINE(txn_uncommitted);
+COVERAGE_DEFINE(txn_unchanged);
+COVERAGE_DEFINE(txn_incomplete);
+COVERAGE_DEFINE(txn_aborted);
+COVERAGE_DEFINE(txn_success);
+COVERAGE_DEFINE(txn_try_again);
+COVERAGE_DEFINE(txn_not_locked);
+COVERAGE_DEFINE(txn_error);
+
 /* An arc from one idl_row to another.  When row A contains a UUID that
  * references row B, this is represented by an arc from A (the source) to B
  * (the destination).
@@ -1524,14 +1534,13 @@ ovsdb_idl_txn_commit(struct ovsdb_idl_txn *txn)
     bool any_updates;
 
     if (txn != txn->idl->txn) {
-        return txn->status;
+        goto stats_out;
     }
 
     /* If we need a lock but don't have it, give up quickly. */
     if (txn->idl->lock_name && !ovsdb_idl_has_lock(txn->idl)) {
         txn->status = TXN_NOT_LOCKED;
-        ovsdb_idl_txn_disassemble(txn);
-        return txn->status;
+        goto disassemble_out;
     }
 
     operations = json_array_create_1(
@@ -1715,7 +1724,20 @@ ovsdb_idl_txn_commit(struct ovsdb_idl_txn *txn)
         txn->status = TXN_TRY_AGAIN;
     }
 
+disassemble_out:
     ovsdb_idl_txn_disassemble(txn);
+stats_out:
+    switch (txn->status) {
+    case TXN_UNCOMMITTED:   COVERAGE_INC(txn_uncommitted);    break;
+    case TXN_UNCHANGED:     COVERAGE_INC(txn_unchanged);      break;
+    case TXN_INCOMPLETE:    COVERAGE_INC(txn_incomplete);     break;
+    case TXN_ABORTED:       COVERAGE_INC(txn_aborted);        break;
+    case TXN_SUCCESS:       COVERAGE_INC(txn_success);        break;
+    case TXN_TRY_AGAIN:     COVERAGE_INC(txn_try_again);      break;
+    case TXN_NOT_LOCKED:    COVERAGE_INC(txn_not_locked);     break;
+    case TXN_ERROR:         COVERAGE_INC(txn_error);          break;
+    }
+
     return txn->status;
 }
 
-- 
1.7.9.5




More information about the dev mailing list