Skip to content
  • Luke Howard's avatar
    This patch fixes some subtle interactions between SLAPI and syncrepl. Due to · ea6f5bad
    Luke Howard authored
    SLAPI always assigning connection and operation IDs of zero for internal
    operations, such operations would cause a stale contextCSN to be returned from
    slap_get_commit_csn(). As a result, SLAPI internal updates would be invisible
    to replicas until an external update was made. Also, SLAPI internal operations
    never called slap_graduate_commit_csn() which leaked pending CSNs.
    
    Also included in this patch is a general cleanup of some of the SLAPI code.
    
    Note that we need to use a separate mutex on conn_nextid to avoid a deadlock
    where a post-operation plugin tries to acquire connections_mutex, having locked
    the per-connection mutex, while the listener thread tries to acquire the
    per-connection mutex (having locked connections_mutex). connection.c needs to
    be fixed to acquire mutexes in the same order.
    ea6f5bad