From ee9e92d81a85344723be3dea504af9b584c81cd3 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Fri, 11 Dec 2009 12:58:30 -0800 Subject: [PATCH] ovsdb: Cleanly abort delete operations. --- ovsdb/transaction.c | 3 +++ tests/ovsdb-transaction.at | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/ovsdb/transaction.c b/ovsdb/transaction.c index d5e36016..02cfeebf 100644 --- a/ovsdb/transaction.c +++ b/ovsdb/transaction.c @@ -82,6 +82,9 @@ ovsdb_txn_destroy(struct ovsdb_txn *txn, void (*cb)(struct ovsdb_txn_row *)) struct ovsdb_txn_row, hmap_node, &txn_table->txn_rows) { + if (txn_row->old) { + txn_row->old->txn_row = NULL; + } if (txn_row->new) { txn_row->new->txn_row = NULL; } diff --git a/tests/ovsdb-transaction.at b/tests/ovsdb-transaction.at index f0c29d43..8abc5d3f 100644 --- a/tests/ovsdb-transaction.at +++ b/tests/ovsdb-transaction.at @@ -382,3 +382,29 @@ print: 2: i=2, j=3], [transaction]) +OVSDB_CHECK_POSITIVE([deletes are aborted cleanly], + [[transact \ + '["insert", "1", "2", "3"]' \ + '["commit"]' \ + '["print"]' \ + '["delete", "1"]' \ + '["abort"]' \ + '["print"]' \ + '["delete", "1"]' \ + '["abort"]' \ + '["print"]']], + [dnl +insert 1 2 3: +commit: +print: +1: i=2, j=3 +delete 1: +abort: +print: +1: i=2, j=3 +delete 1: +abort: +print: +1: i=2, j=3], + [transaction]) + -- 2.30.2