X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=ovsdb%2Ffile.c;h=50c50e83e1bf4f6730390055c5ff7ba56fc0a77a;hb=9df30404d9f806daa6f9851412b2a295f3540e75;hp=a02b6510e5f2f3c826c9a6858ed9ad8dc788a1e8;hpb=e1ebc8cea2991e19456cb9fce54ac8167f6dbf4c;p=sliver-openvswitch.git diff --git a/ovsdb/file.c b/ovsdb/file.c index a02b6510e..50c50e83e 100644 --- a/ovsdb/file.c +++ b/ovsdb/file.c @@ -148,7 +148,6 @@ ovsdb_file_open_log(const char *file_name, enum ovsdb_log_open_mode open_mode, if (schemap) { error = ovsdb_schema_from_json(json, &schema); if (error) { - json_destroy(json); error = ovsdb_wrap_error(error, "failed to parse \"%s\" as ovsdb schema", file_name); @@ -216,6 +215,7 @@ ovsdb_file_open__(const char *file_name, &date, &txn); json_destroy(json); if (error) { + ovsdb_log_unread(log); break; } @@ -224,14 +224,18 @@ ovsdb_file_open__(const char *file_name, oldest_commit = date; } - ovsdb_txn_commit(txn, false); + error = ovsdb_txn_commit(txn, false); + if (error) { + ovsdb_log_unread(log); + break; + } } if (error) { /* Log error but otherwise ignore it. Probably the database just got * truncated due to power failure etc. and we should use its current * contents. */ char *msg = ovsdb_error_to_string(error); - VLOG_WARN("%s", msg); + VLOG_ERR("%s", msg); free(msg); ovsdb_error_destroy(error); @@ -329,10 +333,9 @@ ovsdb_file_txn_row_from_json(struct ovsdb_txn *txn, struct ovsdb_table *table, error = ovsdb_file_update_row_from_json(new, converting, json); if (error) { ovsdb_row_destroy(new); + } else { + ovsdb_txn_row_insert(txn, new); } - - ovsdb_txn_row_insert(txn, new); - return error; } } @@ -405,9 +408,7 @@ ovsdb_file_txn_from_json(struct ovsdb *db, const struct json *json, if (!table) { if (!strcmp(table_name, "_date") && node_json->type == JSON_INTEGER) { - if (date) { - *date = json_integer(node_json); - } + *date = json_integer(node_json); continue; } else if (!strcmp(table_name, "_comment") || converting) { continue;