diff options
author | Ben Pfaff <blp@nicira.com> | 2009-12-11 12:58:30 -0800 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2009-12-11 13:26:08 -0800 |
commit | ee9e92d81a85344723be3dea504af9b584c81cd3 (patch) | |
tree | 8b138b68b05712adaac4ece9486f2199ebc47b1a | |
parent | 577aebdfecb001155242aa9831613310f87ed13a (diff) | |
download | openvswitch-ee9e92d81a85344723be3dea504af9b584c81cd3.tar.gz |
ovsdb: Cleanly abort delete operations.
-rw-r--r-- | ovsdb/transaction.c | 3 | ||||
-rw-r--r-- | tests/ovsdb-transaction.at | 26 |
2 files changed, 29 insertions, 0 deletions
diff --git a/ovsdb/transaction.c b/ovsdb/transaction.c index d5e360167..02cfeebf1 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 f0c29d43c..8abc5d3fe 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]) + |