aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2009-12-11 12:58:30 -0800
committerBen Pfaff <blp@nicira.com>2009-12-11 13:26:08 -0800
commitee9e92d81a85344723be3dea504af9b584c81cd3 (patch)
tree8b138b68b05712adaac4ece9486f2199ebc47b1a
parent577aebdfecb001155242aa9831613310f87ed13a (diff)
ovsdb: Cleanly abort delete operations.
-rw-r--r--ovsdb/transaction.c3
-rw-r--r--tests/ovsdb-transaction.at26
2 files changed, 29 insertions, 0 deletions
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])
+