Pre-commit must not abort the transaction, otherwise the upper layers
may crash accessing it. E.g. ovsdb_trigger_try() checks the state of
the transaction after trying to commit it.
This particular failure can't actually happen, because the function
determine_changes() can't fail. However, the code is still wrong and
a bit misleading, so should be fixed.
Fixes: 53178986d7fc ("ovsdb: Add support for online schema conversion.")
Signed-off-by: Ilya Maximets <[email protected]>
---
ovsdb/transaction.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/ovsdb/transaction.c b/ovsdb/transaction.c
index 65eca6478..98fff1a74 100644
--- a/ovsdb/transaction.c
+++ b/ovsdb/transaction.c
@@ -1090,7 +1090,6 @@ ovsdb_txn_precommit(struct ovsdb_txn *txn)
* was really a no-op. */
error = for_each_txn_row(txn, determine_changes);
if (error) {
- ovsdb_txn_abort(txn);
return OVSDB_WRAP_BUG("can't happen", error);
}
if (ovs_list_is_empty(&txn->txn_tables)) {
--
2.45.2
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev