1. 09 Jun, 2010 1 commit
  2. 07 Jun, 2010 14 commits
  3. 04 Jun, 2010 8 commits
  4. 24 May, 2010 7 commits
  5. 16 May, 2010 1 commit
  6. 15 May, 2010 6 commits
  7. 13 May, 2010 3 commits
    • Vincent Pelletier's avatar
      Prevent exception when logging repr(conn). · 79648795
      Vincent Pelletier authored
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2110 71dcc9de-d417-0410-9af5-da40c76e7ee4
      79648795
    • Vincent Pelletier's avatar
      Solve store deadlocks. · 661c955c
      Vincent Pelletier authored
      Store deadlocks might happen when the order in which storage nodes receive
      object data (and hence, grant write lock for those objects) is not
      consistent among clients. So when a store timeouts, it might be because
      another transaction got the store lock on this storage and object, while
      it might wait for locks we got on other storage nodes or objects.
      In doubt, report a conflict to abort current transaction in hope for the
      other transaction to succeed.
      
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2109 71dcc9de-d417-0410-9af5-da40c76e7ee4
      661c955c
    • Vincent Pelletier's avatar
      Allow multiple conflict resolutions for a single object and transaction. · fc514154
      Vincent Pelletier authored
      As we don't (and must not, otherwise it would deadlock) take a write lock
      on a storage node when detecting a conflict, it is possible that multiple
      conflicts get successively reported for a single object in a single
      transaction. To solve this, client must tolerate multiple conflict for a
      single object. The last resolved conflict being sent to all storage nodes,
      transaction data will be consistent at tpc_finish.
      
      - conflict_serial_dict and resolved_conflict_serial_dict become
        multivalued (sets instead of scalar)
      - each resolution only resolve conflict with highest serial if greater
        than previous resolutions for the same object
        NOTE: this assumes that ("r" being conflict resolution method, "Tn"
        being the TID on which object is based, and "Cn" being a conflict with
        transaction n) when r(T0, C1) generates T1 but triggers C2,
          r(T0, C1) + r(T1, C2) == r(T0, C2)
      
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2108 71dcc9de-d417-0410-9af5-da40c76e7ee4
      fc514154