6d45cda Ticket #490 - Slow role performance when using a lot of roles

Authored and Committed by Noriko Hosoi 11 years ago
    Ticket #490 - Slow role performance when using a lot of roles
    
    Bug description: Role uses the virtual attribute framework.
    When the search with a filter including nsrole or a return
    attribute list containing nsrole is being processed, the
    virtual attribute code checks the entry if the vattr values
    are valid or not by examining the watermark.  If it is valid,
    the values are used as if they are static.  If it is not
    valid, the entry is evaluated against the role definitions
    and dynamically generated virtual attributes are set to the
    list (e_virtual_attrs) with the proper watermark.
    
    The current code additionally checks e_virtual_attrs to determine
    the entry is already evaluated or not.  If it is NULL, it
    considers the entry is not yet evaluated and it returns SLAPI_
    ENTRY_VATTR_NOT_RESOLVED even if the watermark is valid.  That
    is, all the entries which do not have virtual attributes are
    unnecessarily evaluated every time search with nsrole is executed.
    
    Fix description: This patch does not return SLAPI_ENTRY_VATTR_NOT_
    RESOLVED but does SLAPI_ENTRY_VATTR_RESOLVED_ABSENT if e_virtual_
    attrs is NULL AND the watermark is valid.  By skipping the not-
    needed nsrole evaluation, it speeds up the virtual search once
    virutual attribute values are placed in the entries in memory.
    
    https://fedorahosted.org/389/ticket/490
    
    Reviewed by Rich (Thank you!!)
    (cherry picked from commit ae7e811d0072cc2e1c6e99b000c2b1038434010c)
    
        
file modified
+33 -34