Browse Source

fix kvs remove for transactions

Namdak Tonpa 9 years ago
parent
commit
9f50f71e4d
2 changed files with 5 additions and 1 deletions
  1. 4 1
      src/kvs.erl
  2. 1 0
      src/store/store_mnesia.erl

+ 4 - 1
src/kvs.erl

@@ -176,7 +176,10 @@ delete(Tab, Key, #kvs{mod=Mod}) ->
          [] -> Mod:delete(Tab, Key);
           T -> Mod:delete(T, Key) end.
 
-remove(Record,Id,#kvs{mod=Mod}=Driver) ->
+remove(Record, Id,#kvs{mod=store_mnesia}=Driver) -> store_mnesia:remove(Record,Id);
+remove(Record, Id,#kvs{mod=Store}=Driver) -> takeoff(Record,Id,Driver).
+
+takeoff(Record,Id,#kvs{mod=Mod}=Driver) ->
     case get(Record,Id) of
          {error, not_found} -> kvs:error(?MODULE,"Can't remove ~p~n",[{Record,Id}]);
                      {ok,R} -> do_remove(R,Driver) end.

+ 1 - 0
src/store/store_mnesia.erl

@@ -63,4 +63,5 @@ just_one(Fun) ->
         Error -> Error end.
 
 add(Record) -> mnesia:activity(transaction,fun() -> kvs:append(Record,#kvs{mod=?MODULE}) end).
+remove(Record,Id) -> mnesia:activity(transaction,fun() -> kvs:takeoff(Record,Id,#kvs{mod=?MODULE}) end).
 context() -> kvs:config(kvs,mnesia_context,async_dirty).