Commit 8458811a authored by Rusty Russell's avatar Rusty Russell

tdb2: don't cancel transactions on lock failures in tdb1 backend.

In TDB2, the user can override locking functions, so they may
deliberarely fail (eg. be non-blocking) expecting to retry.

For this reason, the TDB2 API requires the caller to cancel the
transaction if tdb_transaction_prepare_commit() fails.
parent a391b2b9
...@@ -963,7 +963,6 @@ static int _tdb1_transaction_prepare_commit(struct tdb1_context *tdb) ...@@ -963,7 +963,6 @@ static int _tdb1_transaction_prepare_commit(struct tdb1_context *tdb)
"tdb1_transaction_prepare_commit:" "tdb1_transaction_prepare_commit:"
" failed to upgrade hash locks"); " failed to upgrade hash locks");
} }
_tdb1_transaction_cancel(tdb);
return -1; return -1;
} }
...@@ -975,7 +974,6 @@ static int _tdb1_transaction_prepare_commit(struct tdb1_context *tdb) ...@@ -975,7 +974,6 @@ static int _tdb1_transaction_prepare_commit(struct tdb1_context *tdb)
"tdb1_transaction_prepare_commit:" "tdb1_transaction_prepare_commit:"
" failed to get open lock"); " failed to get open lock");
} }
_tdb1_transaction_cancel(tdb);
return -1; return -1;
} }
...@@ -985,7 +983,6 @@ static int _tdb1_transaction_prepare_commit(struct tdb1_context *tdb) ...@@ -985,7 +983,6 @@ static int _tdb1_transaction_prepare_commit(struct tdb1_context *tdb)
tdb_logerr(tdb, tdb->last_error, TDB_LOG_ERROR, tdb_logerr(tdb, tdb->last_error, TDB_LOG_ERROR,
"tdb1_transaction_prepare_commit:" "tdb1_transaction_prepare_commit:"
" failed to setup recovery data"); " failed to setup recovery data");
_tdb1_transaction_cancel(tdb);
return -1; return -1;
} }
} }
...@@ -1000,7 +997,6 @@ static int _tdb1_transaction_prepare_commit(struct tdb1_context *tdb) ...@@ -1000,7 +997,6 @@ static int _tdb1_transaction_prepare_commit(struct tdb1_context *tdb)
tdb_logerr(tdb, tdb->last_error, TDB_LOG_ERROR, tdb_logerr(tdb, tdb->last_error, TDB_LOG_ERROR,
"tdb1_transaction_prepare_commit:" "tdb1_transaction_prepare_commit:"
" expansion failed"); " expansion failed");
_tdb1_transaction_cancel(tdb);
return -1; return -1;
} }
tdb->file->map_size = tdb->transaction->old_map_size; tdb->file->map_size = tdb->transaction->old_map_size;
...@@ -1080,8 +1076,10 @@ int tdb1_transaction_commit(struct tdb1_context *tdb) ...@@ -1080,8 +1076,10 @@ int tdb1_transaction_commit(struct tdb1_context *tdb)
if (!tdb->transaction->prepared) { if (!tdb->transaction->prepared) {
int ret = _tdb1_transaction_prepare_commit(tdb); int ret = _tdb1_transaction_prepare_commit(tdb);
if (ret) if (ret) {
_tdb1_transaction_cancel(tdb);
return ret; return ret;
}
} }
methods = tdb->transaction->io_methods; methods = tdb->transaction->io_methods;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment