mirror of
https://github.com/openvswitch/ovs
synced 2025-08-30 22:05:19 +00:00
db-ctl-base: Don't die in check_mutable() on error.
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@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
This commit is contained in:
committed by
Ben Pfaff
parent
e09b3af3e2
commit
e85ec8e8a5
@@ -634,14 +634,17 @@ pre_parse_column_key_value(struct ctl_context *ctx,
|
||||
return column;
|
||||
}
|
||||
|
||||
static void
|
||||
/* Checks if the 'column' is mutable. Returns NULL if it is mutable, or a
|
||||
* malloc()'ed error message otherwise. */
|
||||
static char * OVS_WARN_UNUSED_RESULT
|
||||
check_mutable(const struct ovsdb_idl_row *row,
|
||||
const struct ovsdb_idl_column *column)
|
||||
{
|
||||
if (!ovsdb_idl_is_mutable(row, column)) {
|
||||
ctl_fatal("cannot modify read-only column %s in table %s",
|
||||
column->name, row->table->class_->name);
|
||||
return xasprintf("cannot modify read-only column %s in table %s",
|
||||
column->name, row->table->class_->name);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#define RELOPS \
|
||||
@@ -1210,7 +1213,7 @@ set_column(const struct ovsdb_idl_table_class *table,
|
||||
if (!value_string) {
|
||||
ctl_fatal("%s: missing value", arg);
|
||||
}
|
||||
check_mutable(row, column);
|
||||
die_if_error(check_mutable(row, column));
|
||||
|
||||
if (key_string) {
|
||||
union ovsdb_atom key, value;
|
||||
@@ -1316,7 +1319,7 @@ cmd_add(struct ctl_context *ctx)
|
||||
if (!row) {
|
||||
return;
|
||||
}
|
||||
check_mutable(row, column);
|
||||
die_if_error(check_mutable(row, column));
|
||||
|
||||
type = &column->type;
|
||||
ovsdb_datum_clone(&old, ovsdb_idl_read(row, column), &column->type);
|
||||
@@ -1377,7 +1380,7 @@ cmd_remove(struct ctl_context *ctx)
|
||||
if (!row) {
|
||||
return;
|
||||
}
|
||||
check_mutable(row, column);
|
||||
die_if_error(check_mutable(row, column));
|
||||
|
||||
type = &column->type;
|
||||
ovsdb_datum_clone(&old, ovsdb_idl_read(row, column), &column->type);
|
||||
@@ -1455,7 +1458,7 @@ cmd_clear(struct ctl_context *ctx)
|
||||
struct ovsdb_datum datum;
|
||||
|
||||
die_if_error(get_column(table, ctx->argv[i], &column));
|
||||
check_mutable(row, column);
|
||||
die_if_error(check_mutable(row, column));
|
||||
|
||||
type = &column->type;
|
||||
if (type->n_min > 0) {
|
||||
|
Reference in New Issue
Block a user