adamwill / 389-ds-base

Forked from 389-ds-base 4 years ago
Clone

09b5a2c Ticket 50260 - backend txn plugins can corrupt entry cache

Authored and Committed by mreynolds 5 years ago
    Ticket 50260 - backend txn plugins can corrupt entry cache
    
    Bug Description:  If a nested backend txn plugin fails, any updates
                      it made that went into the entry cache still persist
                      after the database transaction is aborted.
    
    Fix Description:  In order to be sure the entry cache is not corrupted
                      after a backend txn plugin failure we need to flush
                      all the cache entries that were added to the cache
                      after the parent operation was started.
    
                      To do this we record the start time the original operation,
                      (or parent operation), and we record the time any entry
                      is added to the cache.  Then on failure we do a comparision
                      and remove the entry from the cache if it's not in use.
                      If it is in use we add a "invalid" flag which triggers
                      the entry to be removed when the cache entry is returned
                      by the owner.
    
    https://pagure.io/389-ds-base/issue/50260
    
    CI tested and ASAN approved.
    
    Reviewed by: firstyear, tbordaz, and lkrispen (Thanks!!!)
    
    (cherry picked from commit 7ba8a80cfbaed9f6d727f98ed8c284943b3295e1)