pingcap/tiflow

Add tracing and fatal collect mechanism in TiCDC

Ouverte

#765 ouverte le 20 juil. 2020

 (0 commentaire) (0 réaction) (0 personne assignée)Go (310 forks)auto 404
difficulty/hardhelp wanted

Métriques du dépôt

Stars
 (461 étoiles)
Métriques de merge PR
 (Métriques PR en attente)

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:

Guide contributeur