-
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.
Frazer Clement authoredNDB$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