txn_abort() used to return ok even if no txn. The error code changes

broke that behavior.  Changed it to return ok if there was no txn.
This commit is contained in:
Jon Meredith 2009-05-29 13:45:58 -06:00
parent 1409096860
commit a3462d0fa7

View file

@ -463,6 +463,7 @@ txn_abort() ->
ok -> ok ->
receive receive
ok -> ok; ok -> ok;
{error, no_txn} -> ok;
{error, Reason} -> {error, decode_rc(Reason)} {error, Reason} -> {error, decode_rc(Reason)}
end; end;
@ -540,13 +541,14 @@ transaction(Fun, Retries) ->
{ok, db_value()} | db_txn_error(). {ok, db_value()} | db_txn_error().
transaction(_Fun, 0, _Opts) -> transaction(_Fun, 0, _Opts) ->
ok = txn_abort(),
{error, {transaction_failed, retry_limit_reached}}; {error, {transaction_failed, retry_limit_reached}};
transaction(Fun, Retries, Opts) -> transaction(Fun, Retries, Opts) ->
case txn_begin(Opts) of case txn_begin(Opts) of
ok -> ok ->
try Fun() of try Fun() of
abort -> abort ->
error_logger:info_msg("function requested abort"),
ok = txn_abort(), ok = txn_abort(),
{error, transaction_aborted}; {error, transaction_aborted};
@ -566,6 +568,7 @@ transaction(Fun, Retries, Opts) ->
transaction(Fun, R); transaction(Fun, R);
_ : Reason -> _ : Reason ->
error_logger:info_msg("function threw non-lock error - ~p", [Reason]),
ok = txn_abort(), ok = txn_abort(),
{error, {transaction_failed, Reason}} {error, {transaction_failed, Reason}}
end; end;