pingcap/tiflow

Add tracing and fatal collect mechanism in TiCDC

Aberta

#765 aberto em 20 de jul. de 2020

 (0 comentário) (0 reação) (0 responsável)Go (310 forks)auto 404
difficulty/hardhelp wanted

Métricas do repositório

Stars
 (461 estrelas)
Métricas de merge de PR
 (Métricas PR pendentes)

Description

Feature Request

Is your feature request related to a problem? Please describe:

TiCDC defines some fatal errors for fast fail in some data inconsistent scenarios. In most of these cases, replication can be recovered by resuming the task. But it is different to tell the root cause of fatal error and whether data inconsistency would happen in downstream.

Describe the feature you'd like:

TiCDC should provide a flexible way for fatal error collect and tracing. We should classify errors and apply different strategies to different kinds of fetal error.

Task List

  • Refine error usage

    • Make regulation and unified the usage of return err and error chan
  • Basic error tracking framework

    • Design and implement a general module for error information track, record and persistent, used for some fatal error debug and backtrace.
  • Deal with the fatal error of The CRTs must be greater than the resolvedTs

    • puller: Design and implement a tsTracker tracking module in puller, which enables recoding ts forward history and saving necessary information when a fatal error happens, the saved information can help us to backtrace the forward history and find the potential bug.
    • Other modules, including processor and KV client: Firstly we should log enough context information when fatal error happens. Secondly we should estimate whether more tracing information can be saved.
  • Other fatal errors

    • Classify other fatal errors, also need to investigate whether tracing information can be saved in these scenarios.

Value

Value description

This feature will be helpful to debug and data consistency check in extreme error scenarios.

Value score

  • 5

Workload estimation

  • (TBD) person-day

Time

GanttStart: GanttDue:

Guia do colaborador