In the following scenarios, temporary inconsistencies may occur between upstream and downstream data when using logarithmic timestamps for syncpoints:
-
The syncpoint at ts = 10 has been reported by all dispatchers, and a write command is sent to the downstream table trigger via the validation of onAllDispatcherReportedBlockEvent.
-
The maintainer requests dispatcher A to initiate a move operation.
-
After dispatcher A is rebuilt on a new node, it starts fetching data again from startTs = 9, and dispatcher A has other DML data that needs to be synchronized at ts = 10.
-
When dispatcher A starts replaying the DML at ts = 10 downstream, the table trigger synchronously writes the syncpoint downstream. If the DML replayed by dispatcher A has an intermediate state, there is a probability that the timestamps of this syncpoint will be inconsistent between upstream and downstream data.
This is a very low-probability problem. It requires the table trigger to delay writing to the syncpoint, dispatcherA to complete the incremental scan very quickly, dispatcherA to have a DML with ts=10 that needs to be written in multiple batches, and dispatcherA and the table trigger to write simultaneously for an inconsistency to occur.