adamwill / 389-ds-base

Forked from 389-ds-base 4 years ago
Clone

35b42aa Ticket 50542 - Entry cache contention during base search

Authored and Committed by tbordaz 4 years ago
    Ticket 50542 - Entry cache contention during base search
    
    Bug Description:
    	During a base search the entry cache lock is acquired to retrieve the target entry.
    	Later when the candidate list is built, the entry cache lock is also acquired
    	to retrieve the candidate that is actually the target entry itself
    
    	So for a base search the entry cache lock is accessed 4 times (2 acquires + 2 releases)
    
    	It is very easy to create a huge contention (e.g. dereferencing large group) increasing
    	etime
    
    Fix Description:
    	The idea is to acquire the entry, from the entry cache (with refcnt++) when searching the base
    	search. Then instead of returning the entry (refcnt--) the entry is kept in the operation until
    	the operation completes. If later we need the entry (to send it back to the client), the entry is
    	picked up from the operation not from the entry cache lookup
    
    https://pagure.io/389-ds-base/issue/50542
    
    Reviewed by: Ludwig Krispenz, William Brown
    
    Platforms tested: F29
    
    Flag Day: no
    
    Doc impact: no
    
        
file modified
+34 -2
file modified
+9 -0