What did you do?
Ran the cdc_network_loss integration test on a TiCDC new-architecture cluster
with a MySQL-compatible downstream sink.
Reproduction steps:
- Create changefeed
cdc-network-loss-sync to the downstream MySQL sink.
- Pause the changefeed, prepare 100 sysbench tables with 500,000 rows each,
then resume the changefeed.
- Run
sysbench oltp_update_non_index with 100 threads for one hour.
- During a two-hour period, inject
NetworkChaos every 30 minutes:
- randomly select one upstream TiCDC peer;
- packet loss:
100%;
- correlation:
25%;
- duration:
10s.
- After the workload and chaos period finish, get the current upstream TSO and
wait until ticdc_owner_checkpoint_ts for the changefeed is greater than it.
- Compare all upstream and downstream tables using CRC32.
Timeline (UTC):
- 16:10:17: resumed changefeed and started the one-hour workload.
- 16:40:17-27, 17:10:17-27, 17:40:17-27, 18:10:17-27:
four 10-second network-loss injections.
- 17:10:18: workload finished.
- 18:10:28: captured the upstream TSO and started waiting for checkpoint.
- 18:10:58: checkpoint exceeded the target TSO; CRC comparison started.
Note: the current test creates NetworkChaos without an explicit target.
Because TiDB Cloud components use host networking, the framework warns that the
fault can affect the selected host's whole network scope rather than a single
TiCDC-to-peer link.
Internal execution: https://tcms.pingcap.net/dashboard/executions/plan/8226703
What did you expect to see?
After network connectivity recovers, TiCDC should reconnect and replicate all
transactions up to the checkpoint. Once the changefeed checkpoint exceeds the
captured upstream TSO, CRC32 results between upstream and downstream should be
identical.
What did you see instead?
The changefeed checkpoint exceeded the target TSO within 30 seconds, while the
workload had already stopped for one hour. However, CRC32 comparison remained
inconsistent for the full 90-minute retry window:
- 18:11:19:
workload.sbtest33, source 1909784911, sink 4228885997
- 18:41:40:
workload.sbtest90, source 3273849050, sink 1173175951
- 19:12:01:
workload.sbtest90, same mismatch as above
- 19:42:22:
workload.sbtest8, source 3724601131, sink 2572728669
The checker reports only the first mismatched table in each run; the table name
can vary because the comparison iterates over a Go map and stops at the first
mismatch. Therefore, the changing table name does not show that earlier tables
recovered.
The changefeed remained in normal state in the available logs. This indicates
that TiCDC's reported checkpoint can advance beyond the target TSO even though
the downstream data is not fully consistent.
Versions of the cluster
- TiCDC:
v26.3.3-9-g6500294
- TiCDC git hash:
65002945d670fea61492e35545326a0a289853c5
- TiCDC build time:
2026-08-19 00:50:55 UTC
- TiCDC kernel type:
Next Generation
- TiDBX test plan:
v26.3.99-tidbx-release-20260820-hpmwh
- Downstream: MySQL-compatible sink provisioned by the TiDBX testbed
What did you do?
Ran the
cdc_network_lossintegration test on a TiCDC new-architecture clusterwith a MySQL-compatible downstream sink.
Reproduction steps:
cdc-network-loss-syncto the downstream MySQL sink.then resume the changefeed.
sysbench oltp_update_non_indexwith 100 threads for one hour.NetworkChaosevery 30 minutes:100%;25%;10s.wait until
ticdc_owner_checkpoint_tsfor the changefeed is greater than it.Timeline (UTC):
four 10-second network-loss injections.
Note: the current test creates NetworkChaos without an explicit
target.Because TiDB Cloud components use host networking, the framework warns that the
fault can affect the selected host's whole network scope rather than a single
TiCDC-to-peer link.
Internal execution: https://tcms.pingcap.net/dashboard/executions/plan/8226703
What did you expect to see?
After network connectivity recovers, TiCDC should reconnect and replicate all
transactions up to the checkpoint. Once the changefeed checkpoint exceeds the
captured upstream TSO, CRC32 results between upstream and downstream should be
identical.
What did you see instead?
The changefeed checkpoint exceeded the target TSO within 30 seconds, while the
workload had already stopped for one hour. However, CRC32 comparison remained
inconsistent for the full 90-minute retry window:
workload.sbtest33, source1909784911, sink4228885997workload.sbtest90, source3273849050, sink1173175951workload.sbtest90, same mismatch as aboveworkload.sbtest8, source3724601131, sink2572728669The checker reports only the first mismatched table in each run; the table name
can vary because the comparison iterates over a Go map and stops at the first
mismatch. Therefore, the changing table name does not show that earlier tables
recovered.
The changefeed remained in normal state in the available logs. This indicates
that TiCDC's reported checkpoint can advance beyond the target TSO even though
the downstream data is not fully consistent.
Versions of the cluster
v26.3.3-9-g650029465002945d670fea61492e35545326a0a289853c52026-08-19 00:50:55 UTCNext Generationv26.3.99-tidbx-release-20260820-hpmwh