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

Reply via email to