diff --git a/cdc/puller/puller.go b/cdc/puller/puller.go index d284b08869a..93fd4f8ec71 100644 --- a/cdc/puller/puller.go +++ b/cdc/puller/puller.go @@ -160,12 +160,18 @@ func (p *pullerImpl) Run(ctx context.Context) error { lastResolvedTs := p.checkpointTs g.Go(func() error { output := func(raw *model.RawKVEntry) error { + // even after https://github.com/pingcap/ticdc/pull/2038, kv client + // could still miss region change notification, which leads to resolved + // ts update missing in puller, however resolved ts fallback here can + // be ignored since no late data is received and the guarantee of + // resolved ts is not broken. if raw.CRTs < p.resolvedTs || (raw.CRTs == p.resolvedTs && raw.OpType != model.OpTypeResolved) { - log.Panic("The CRTs must be greater than the resolvedTs", + log.Warn("The CRTs is fallen back in pulelr", zap.Reflect("row", raw), zap.Uint64("CRTs", raw.CRTs), zap.Uint64("resolvedTs", p.resolvedTs), zap.Int64("tableID", tableID)) + return nil } select { case <-ctx.Done():