Skip to content
  • Frazer Clement's avatar
    e97f437f
    Bug #20713499 DELETE-DELETE CONFLICT IS NOT TRANSACTIONAL · e97f437f
    Frazer Clement authored
    NDB$EPOCH, NDB$EPOCH_TRANS and NDB$EPOCH2 ignore delete-delete /
    delete-NoSuchRow conflicts as these are not properly handled in a way
    that avoids divergence in those algorithms.
    
    NDB$EPOCH2_TRANS should detect these conflicts as :
     i) It uses multiple passes to avoid the batching-related
        problems that the row-based algorithms have.
    ii) It uses operation reflection to avoid divergence
        in the cases where an Insert follows a detected delete-delete
        conflict.
    
    This patch modifies the behaviour of NDB$EPOCH2_TRANS to treat
    delete-delete conflicts like the other conflict types, and
    modifies the existing testcases to provide coverage of this
    case.
    
    Actual behaviour for DEL-INS conflicts depends on epoch boundaries
    relative to user transaction commits, so the testcases take this
    into account, using more programmatic checks than the normal
    MTR output comparisons.
    
    Rather than deterministic output, we require that the output is
    explained by the measured epoch boundaries, and that the
    clusters do not diverge.
    e97f437f
    Bug #20713499 DELETE-DELETE CONFLICT IS NOT TRANSACTIONAL
    Frazer Clement authored
    NDB$EPOCH, NDB$EPOCH_TRANS and NDB$EPOCH2 ignore delete-delete /
    delete-NoSuchRow conflicts as these are not properly handled in a way
    that avoids divergence in those algorithms.
    
    NDB$EPOCH2_TRANS should detect these conflicts as :
     i) It uses multiple passes to avoid the batching-related
        problems that the row-based algorithms have.
    ii) It uses operation reflection to avoid divergence
        in the cases where an Insert follows a detected delete-delete
        conflict.
    
    This patch modifies the behaviour of NDB$EPOCH2_TRANS to treat
    delete-delete conflicts like the other conflict types, and
    modifies the existing testcases to provide coverage of this
    case.
    
    Actual behaviour for DEL-INS conflicts depends on epoch boundaries
    relative to user transaction commits, so the testcases take this
    into account, using more programmatic checks than the normal
    MTR output comparisons.
    
    Rather than deterministic output, we require that the output is
    explained by the measured epoch boundaries, and that the
    clusters do not diverge.
Loading