Skip to content
  • Eric Cano's avatar
    Revisited locking in BackendRados. · 4918ed96
    Eric Cano authored
    The locks in Rados have timeouts. They are needed in case a locker process dies without
    releasing its lock. As we have some contention in heavily loaded situations, it can happen
    that a process is till accessing objects while the lock is expired. To lessen the likeliness
    of this situation, the timeout has been increased from 10s to 60s.
    
    The backoff was ajusted using the MultithreadLockingInterface unit test, with printouts
    allowing to visually see the effect of the backoff strategy. The printouts are committed,
    but they are commented out.
    
    The same unit test was fized as it used to create an empty object, which is not supported
    anymore in order to be able to detect locking of non-existing objects (lock creates the object,
    but we detect non-existence as it is empty and re-delete it.
    
    This mechanism of empty object locking detection is also added to the async update of object
    as it was missing there (and the backoff has been added there too).
    4918ed96