anchor.diff:              tlog_write(Entry, Key, X);
           {ok, _} ->
               Error = {fail, not_a_number},
  -            NewTlogEntry = case tx_tlog:get_entry_status(Entry) of
  -                               {fail, _} -> Entry;
  -                               not_found -> tx_tlog:set_entry_status(Entry, {fail, not_found});
  -                               _ -> tx_tlog:set_entry_status(Entry, Error)
  -                           end,
  -            {NewTlogEntry, Error};
  +            {update_tlog_entry_2phase_op(Entry, Error), Error};
           E when erlang:is_tuple(E) -> %% other previous error
               {Entry, E}
       end.
  
positive.code:             tlog_write(Entry, Key, encode_value(NewValue2));
          {ok, _} -> %% value is not a list
              Error = {fail, not_a_list},
              NewTlogEntry = case tx_tlog:get_entry_status(Entry) of
                                 {fail, _} -> Entry;
                                 not_found -> tx_tlog:set_entry_status(Entry, {fail, not_found});
                                 _ -> tx_tlog:set_entry_status(Entry, Error)
                             end,
              {NewTlogEntry, Error};
          X when erlang:is_tuple(X) -> %% other previous error
              {Entry, X}
      end.
  
negative.code:       (not erlang:is_list(ToDel)) ->
      %% input type error
      Error = {fail, not_a_list},
      {update_tlog_entry_2phase_op(Entry, Error), Error};
  tlog_add_del_on_list(Entry, Key, ToAdd, ToDel) ->
      {_, Res0} = tlog_read(Entry, Key),
      case Res0 of
  