fc70e4a Ticket #47585 Replication Failures related to skipped entries due to cleaned rids

Authored and Committed by rmeggins 10 years ago
    Ticket #47585 Replication Failures related to skipped entries due to cleaned rids
    
    https://fedorahosted.org/389/ticket/47585
    Reviewed by: nhosoi (Thanks!)
    Branch: 389-ds-base-1.3.1
    Fix Description: If a change was found in the changelog buffer that is
    skipped due to having an unknown replica ID (rid), the entire buffer was
    marked as CLC_STATE_NEW_RID.  When the buffer is exhausted and the iterator
    code goes to read in the new buffer, it would not read in the new buffer
    because it only loads a new buffer if the current buffer state is
    CLC_STATE_READY.  I don't know why the entire buffer would be marked as
    CLC_STATE_NEW_RID and stop iteration.  It seems to me that just the update
    should be skipped, but new buffers should be loaded in order to keep sending
    non-skipped updates to the consumer.
    It is possible for a CSN with an unknown RID to get into the changelog if
    the server with that RID had been removed by cleanruv/cleanallruv.  In that
    case, the CSN should be skipped.  It is assumed that the change was already
    sent - cleanallruv is supposed to wait until all known changes have been
    seen before removing the RID from the RUV - so it is safe to skip it.
    Added additional debugging, so that we can better tell why changelog entries
    were skipped.
    Platforms tested: RHEL6 x86_64
    Flag Day: no
    Doc impact: no
    (cherry picked from commit cf08f1274404e4796966011a98a6a0acbbfd6070)
    (cherry picked from commit 30bb98fb693ea1aac9774bdc43b923eacd72570a)