errormanager

package
v0.0.0-...-503c688 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 8, 2023 License: Apache-2.0, Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (

	// ConflictErrorTableName is the table name for duplicate detection.
	ConflictErrorTableName = "conflict_error_v1"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type DataConflictInfo

type DataConflictInfo struct {
	RawKey   []byte
	RawValue []byte
	KeyData  string
	Row      string
}

DataConflictInfo is the information of a data conflict error.

type ErrorManager

type ErrorManager struct {
	// contains filtered or unexported fields
}

ErrorManager records errors during the import process.

func New

func New(db *sql.DB, cfg *config.Config, logger log.Logger) *ErrorManager

New creates a new error manager.

func (*ErrorManager) HasError

func (em *ErrorManager) HasError() bool

HasError returns true if any error type has reached the limit

func (*ErrorManager) Init

func (em *ErrorManager) Init(ctx context.Context) error

Init creates the schemas and tables to store the task information.

func (*ErrorManager) LogErrorDetails

func (em *ErrorManager) LogErrorDetails()

LogErrorDetails return a slice of zap.Field for each error type

func (*ErrorManager) Output

func (em *ErrorManager) Output() string

Output renders a table which contains error summery for each error type.

func (*ErrorManager) RecordDataConflictError

func (em *ErrorManager) RecordDataConflictError(
	ctx context.Context,
	logger log.Logger,
	tableName string,
	conflictInfos []DataConflictInfo,
) error

RecordDataConflictError records a data conflict error.

func (*ErrorManager) RecordIndexConflictError

func (em *ErrorManager) RecordIndexConflictError(
	ctx context.Context,
	logger log.Logger,
	tableName string,
	indexNames []string,
	conflictInfos []DataConflictInfo,
	rawHandles, rawRows [][]byte,
) error

RecordIndexConflictError records a index conflict error.

func (*ErrorManager) RecordTypeError

func (em *ErrorManager) RecordTypeError(
	ctx context.Context,
	logger log.Logger,
	tableName string,
	path string,
	offset int64,
	rowText string,
	encodeErr error,
) error

RecordTypeError records a type error. If the number of recorded type errors exceed the max-error count, also returns `err` directly.

func (*ErrorManager) ResolveAllConflictKeys

func (em *ErrorManager) ResolveAllConflictKeys(
	ctx context.Context,
	tableName string,
	pool *utils.WorkerPool,
	fn func(ctx context.Context, handleRows [][2][]byte) error,
) error

ResolveAllConflictKeys query all conflicting rows (handle and their values) from the current error report and resolve them concurrently.

func (*ErrorManager) TypeErrorsRemain

func (em *ErrorManager) TypeErrorsRemain() int64

TypeErrorsRemain returns the number of type errors that can be recorded.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL