1. 21 Jan, 2011 7 commits
  2. 20 Jan, 2011 2 commits
  3. 19 Jan, 2011 5 commits
  4. 18 Jan, 2011 3 commits
  5. 17 Jan, 2011 1 commit
  6. 11 Jan, 2011 9 commits
  7. 10 Jan, 2011 8 commits
  8. 06 Jan, 2011 5 commits
    • Vincent Pelletier's avatar
      After undoing an object, its current serial goes back in time. · 10c96d61
      Vincent Pelletier authored
      This is important for chaining "undo" for a given object in a single
      transaction, to allow checking for conflicts.
      Also, this means that get_baseTID return value cannot be used to update
      cache when undoing, so only update cache when storing a new revision.
      Actually, cache was never updated when undoing anyway, as current snapshot
      TID was unlikely to exist as a serial for any object, so it would not be
      found in cache and update would be a no-op.
      
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2597 71dcc9de-d417-0410-9af5-da40c76e7ee4
      10c96d61
    • Vincent Pelletier's avatar
      Resolve deadlocks detected by storage nodes. · 7fccafeb
      Vincent Pelletier authored
      Also reverts r2533: even if it's true that TIDs have no meaning at that level,
      they are a handy way to prioritise a transaction over another, to break lock
      cycles (aka deadlocks). This is the "detection" part of the change.
      When a storage reports a deadlock, client must store all already-stored
      objects again with "unlock" flag set.
      Upon receiving those store requests, storage must release locks held by
      transaction on those objects, and requeue the store request. If client didn't
      hold any lock (initial store was still in queue), drop the second store
      request.
      This doesn't solve possible deadlocks if ZODB-level sends us objects in a
      different order (ex: client 1 sending [OID1, OID2] & client 2 sending
      [OID2, OID1]).
      There is one important change to r2533's revert, which queues older
      transactions and notifies deadlock for younger ones. The original code did it
      the other way around, and it looks unfair to old transactions (they will keep
      being delayed by younger ones, and will just get older and older).
      
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2596 71dcc9de-d417-0410-9af5-da40c76e7ee4
      7fccafeb
    • Vincent Pelletier's avatar
      Do not work on local_var.conflict_serial_dict when resolving conflicts. · 68b6c5e9
      Vincent Pelletier authored
      If a conflict gets reported while handling a previously-reported conflict
      on the same object, second conflict is dropped on
        conflict_serial_dict.pop()
      before it is handled.
      
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2595 71dcc9de-d417-0410-9af5-da40c76e7ee4
      68b6c5e9
    • Vincent Pelletier's avatar
      Do not exit loop if answers are still expected or conflicts known. · 2b07640a
      Vincent Pelletier authored
      This will allow sending requests even when no conflict occur. For example,
      it can happen to avoid a deadlock on storage nodes (store again, no conflict
      to resolve).
      Also, call conflict resolution as soon as a conflict is known, to reduce
      tpc_vote duration.
      
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2594 71dcc9de-d417-0410-9af5-da40c76e7ee4
      2b07640a
    • Vincent Pelletier's avatar
      Fix docstrings. · 929206c1
      Vincent Pelletier authored
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2593 71dcc9de-d417-0410-9af5-da40c76e7ee4
      929206c1