1. 24 Jan, 2011 3 commits
  2. 21 Jan, 2011 7 commits
  3. 20 Jan, 2011 2 commits
  4. 19 Jan, 2011 5 commits
  5. 18 Jan, 2011 3 commits
  6. 17 Jan, 2011 1 commit
  7. 11 Jan, 2011 9 commits
  8. 10 Jan, 2011 8 commits
  9. 06 Jan, 2011 2 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