What did you do?
Run a TiCDC cluster and trigger a capture’s etcd session to be done, or its lease to expire, while that capture may still own dispatcher managers and sinks writing downstream.
What did you expect to see?
The affected capture should immediately fence itself locally, reject new maintainer requests, close local dispatcher write paths, and avoid further downstream writes.
What did you see instead?
The shutdown path did not reliably fence local write paths on etcd session loss. A stale capture could continue processing dispatcher messages during shutdown or failover, creating a window for duplicate or unsafe downstream writes before cleanup finished.
Versions of the cluster
TiCDC master / next-gen architecture.
What did you do?
Run a TiCDC cluster and trigger a capture’s etcd session to be done, or its lease to expire, while that capture may still own dispatcher managers and sinks writing downstream.
What did you expect to see?
The affected capture should immediately fence itself locally, reject new maintainer requests, close local dispatcher write paths, and avoid further downstream writes.
What did you see instead?
The shutdown path did not reliably fence local write paths on etcd session loss. A stale capture could continue processing dispatcher messages during shutdown or failover, creating a window for duplicate or unsafe downstream writes before cleanup finished.
Versions of the cluster
TiCDC master / next-gen architecture.