Allow multiple conflict resolutions for a single object and transaction.
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
Showing with 25 additions and 30 deletions