• Julien Muchembled's avatar
    Implement deadlock avoidance · 092992db
    Julien Muchembled authored
    This is a first version with several optimizations possible:
    - improve EventQueue (or implement a specific queue) to minimize deadlocks
    - turn the RebaseObject packet into a notification
    
    Sorting oids could also be useful to reduce the probability of deadlocks,
    but that would never be enough to avoid them completely, even if there's a
    single storage. For example:
    
    1. C1 does a first store (x or y)
    2. C2 stores x and y; one is delayed
    3. C1 stores the other -> deadlock
       When solving the deadlock, the data of the first store may only
       exist on the storage.
    
    2 functional tests are removed because they're redundant,
    either with ZODB tests or with the new threaded tests.
    092992db
protocol.py 48.7 KB