[ovs-dev] [PATCH 10/23] db-ctl-base: Don't die in pre_get_table() on error.

Jakub Sitnicki jkbs at redhat.com
Mon Jul 2 10:50:06 UTC 2018


Return the error message to the caller instead of reporting it and dying
so that the caller can handle the error without terminating the process
if needed.

Signed-off-by: Jakub Sitnicki <jkbs at redhat.com>
---
 lib/db-ctl-base.c | 33 ++++++++++++++++++++-------------
 1 file changed, 20 insertions(+), 13 deletions(-)

diff --git a/lib/db-ctl-base.c b/lib/db-ctl-base.c
index e7785f7fb..90df25bda 100644
--- a/lib/db-ctl-base.c
+++ b/lib/db-ctl-base.c
@@ -479,11 +479,15 @@ pre_get_column(struct ctl_context *ctx,
     return NULL;
 }
 
-static const struct ovsdb_idl_table_class *
-pre_get_table(struct ctl_context *ctx, const char *table_name)
+static char * OVS_WARN_UNUSED_RESULT
+pre_get_table(struct ctl_context *ctx, const char *table_name,
+              const struct ovsdb_idl_table_class **tablep)
 {
     const struct ovsdb_idl_table_class *table;
-    die_if_error(get_table(table_name, &table));
+    char *error = get_table(table_name, &table);
+    if (error) {
+        return error;
+    }
     ovsdb_idl_add_table(ctx->idl, table);
 
     const struct ctl_table_class *ctl = &ctl_classes[table - idl_classes];
@@ -497,7 +501,10 @@ pre_get_table(struct ctl_context *ctx, const char *table_name)
         }
     }
 
-    return table;
+    if (tablep) {
+        *tablep = table;
+    }
+    return NULL;
 }
 
 static char *
@@ -868,7 +875,7 @@ pre_cmd_get(struct ctl_context *ctx)
                   "possibly erroneous");
     }
 
-    table = pre_get_table(ctx, table_name);
+    die_if_error(pre_get_table(ctx, table_name, &table));
     for (i = 3; i < ctx->argc; i++) {
         if (!strcasecmp(ctx->argv[i], "_uuid")
             || !strcasecmp(ctx->argv[i], "-uuid")) {
@@ -1054,7 +1061,7 @@ pre_cmd_list(struct ctl_context *ctx)
     const char *table_name = ctx->argv[1];
     const struct ovsdb_idl_table_class *table;
 
-    table = pre_get_table(ctx, table_name);
+    die_if_error(pre_get_table(ctx, table_name, &table));
     pre_list_columns(ctx, table, column_names);
 }
 
@@ -1186,7 +1193,7 @@ pre_cmd_find(struct ctl_context *ctx)
     const struct ovsdb_idl_table_class *table;
     int i;
 
-    table = pre_get_table(ctx, table_name);
+    die_if_error(pre_get_table(ctx, table_name, &table));
     pre_list_columns(ctx, table, column_names);
     for (i = 2; i < ctx->argc; i++) {
         pre_parse_column_key_value(ctx, ctx->argv[i], table);
@@ -1309,7 +1316,7 @@ pre_cmd_set(struct ctl_context *ctx)
     const struct ovsdb_idl_table_class *table;
     int i;
 
-    table = pre_get_table(ctx, table_name);
+    die_if_error(pre_get_table(ctx, table_name, &table));
     for (i = 3; i < ctx->argc; i++) {
         pre_parse_column_key_value(ctx, ctx->argv[i], table);
     }
@@ -1346,7 +1353,7 @@ pre_cmd_add(struct ctl_context *ctx)
     const struct ovsdb_idl_table_class *table;
     const struct ovsdb_idl_column *column;
 
-    table = pre_get_table(ctx, table_name);
+    die_if_error(pre_get_table(ctx, table_name, &table));
     die_if_error(pre_get_column(ctx, table, column_name, &column));
 }
 
@@ -1407,7 +1414,7 @@ pre_cmd_remove(struct ctl_context *ctx)
     const struct ovsdb_idl_table_class *table;
     const struct ovsdb_idl_column *column;
 
-    table = pre_get_table(ctx, table_name);
+    die_if_error(pre_get_table(ctx, table_name, &table));
     die_if_error(pre_get_column(ctx, table, column_name, &column));
 }
 
@@ -1479,7 +1486,7 @@ pre_cmd_clear(struct ctl_context *ctx)
     const struct ovsdb_idl_table_class *table;
     int i;
 
-    table = pre_get_table(ctx, table_name);
+    die_if_error(pre_get_table(ctx, table_name, &table));
     for (i = 3; i < ctx->argc; i++) {
         const struct ovsdb_idl_column *column;
 
@@ -1603,7 +1610,7 @@ pre_cmd_destroy(struct ctl_context *ctx)
 {
     const char *table_name = ctx->argv[1];
 
-    pre_get_table(ctx, table_name);
+    die_if_error(pre_get_table(ctx, table_name, NULL));
 }
 
 static void
@@ -1656,7 +1663,7 @@ pre_cmd_wait_until(struct ctl_context *ctx)
     const struct ovsdb_idl_table_class *table;
     int i;
 
-    table = pre_get_table(ctx, table_name);
+    die_if_error(pre_get_table(ctx, table_name, &table));
 
     for (i = 3; i < ctx->argc; i++) {
         pre_parse_column_key_value(ctx, ctx->argv[i], table);
-- 
2.14.4



More information about the dev mailing list