diff mbox

[ovs-dev,replication,SMv2,1/7] ovsdb: Properly handle error returned from from reset_database()

Message ID 1472253354-69501-2-git-send-email-azhou@ovn.org
State Accepted
Headers show

Commit Message

Andy Zhou Aug. 26, 2016, 11:15 p.m. UTC
Fix a memory leak in case of error. The error object was not properly
disposed.  Since the error to reset DB is not expected, log it and
exit.

Signed-off-by: Andy Zhou <azhou@ovn.org>
---
 ovsdb/replication.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
diff mbox

Patch

diff --git a/ovsdb/replication.c b/ovsdb/replication.c
index de6eec1..6681a20 100644
--- a/ovsdb/replication.c
+++ b/ovsdb/replication.c
@@ -21,6 +21,7 @@ 
 
 #include "condition.h"
 #include "openvswitch/json.h"
+#include "openvswitch/vlog.h"
 #include "jsonrpc.h"
 #include "ovsdb.h"
 #include "ovsdb-error.h"
@@ -32,6 +33,8 @@ 
 #include "table.h"
 #include "transaction.h"
 
+VLOG_DEFINE_THIS_MODULE(replication)
+
 static char *active_ovsdb_server;
 static struct jsonrpc *rpc;
 static struct sset monitored_tables = SSET_INITIALIZER(&monitored_tables);
@@ -88,12 +91,14 @@  replication_run(struct shash *all_dbs)
         /* Reset local databases. */
         if (reset_dbs) {
             struct ovsdb_error *error = reset_databases(all_dbs);
-            if (!error) {
+            if (error) {
+                /* In case reset DB fails, log the error before exiting.  */
+                char *msg = ovsdb_error_to_string(error);
+                ovsdb_error_destroy(error);
+                VLOG_FATAL("Failed to reset DB, (%s)", msg);
+            } else {
                 reset_dbs = false;
             }
-            /* In case of success reseting the databases,
-             * return in order to notify monitors. */
-            return;
         }
 
         /* Open JSON-RPC. */