@@ -840,7 +840,7 @@ func (w *worker) checkVectorIndexProcessOnTiFlash(jobCtx *jobContext, job *model
840
840
if dbterror .ErrWaitReorgTimeout .Equal (err ) {
841
841
return false , ver , nil
842
842
}
843
- if ! errorIsRetryable (err , job ) {
843
+ if ! isRetryableJobError (err , job . ErrorCount ) {
844
844
logutil .DDLLogger ().Warn ("run add vector index job failed, convert job to rollback" , zap .Stringer ("job" , job ), zap .Error (err ))
845
845
ver , err = convertAddIdxJob2RollbackJob (jobCtx , job , tbl .Meta (), []* model.IndexInfo {indexInfo }, err )
846
846
}
@@ -981,7 +981,7 @@ SwitchIndexState:
981
981
var reorgTp model.ReorgType
982
982
reorgTp , err = pickBackfillType (job )
983
983
if err != nil {
984
- if ! errorIsRetryable (err , job ) {
984
+ if ! isRetryableJobError (err , job . ErrorCount ) {
985
985
job .State = model .JobStateCancelled
986
986
}
987
987
return ver , err
@@ -1261,7 +1261,7 @@ func runIngestReorgJob(w *worker, jobCtx *jobContext, job *model.Job,
1261
1261
if kv .ErrKeyExists .Equal (err ) {
1262
1262
logutil .DDLLogger ().Warn ("import index duplicate key, convert job to rollback" , zap .Stringer ("job" , job ), zap .Error (err ))
1263
1263
ver , err = convertAddIdxJob2RollbackJob (jobCtx , job , tbl .Meta (), allIndexInfos , err )
1264
- } else if ! errorIsRetryable (err , job ) {
1264
+ } else if ! isRetryableJobError (err , job . ErrorCount ) {
1265
1265
logutil .DDLLogger ().Warn ("run reorg job failed, convert job to rollback" ,
1266
1266
zap .String ("job" , job .String ()), zap .Error (err ))
1267
1267
ver , err = convertAddIdxJob2RollbackJob (jobCtx , job , tbl .Meta (), allIndexInfos , err )
@@ -1274,10 +1274,20 @@ func runIngestReorgJob(w *worker, jobCtx *jobContext, job *model.Job,
1274
1274
return done , ver , nil
1275
1275
}
1276
1276
1277
- func errorIsRetryable (err error , job * model. Job ) bool {
1278
- if job . ErrorCount + 1 >= variable .GetDDLErrorCountLimit () {
1277
+ func isRetryableJobError (err error , jobErrCnt int64 ) bool {
1278
+ if jobErrCnt + 1 >= variable .GetDDLErrorCountLimit () {
1279
1279
return false
1280
1280
}
1281
+ return isRetryableError (err )
1282
+ }
1283
+
1284
+ func isRetryableError (err error ) bool {
1285
+ errMsg := err .Error ()
1286
+ for _ , m := range dbterror .ReorgRetryableErrMsgs {
1287
+ if strings .Contains (errMsg , m ) {
1288
+ return true
1289
+ }
1290
+ }
1281
1291
originErr := errors .Cause (err )
1282
1292
if tErr , ok := originErr .(* terror.Error ); ok {
1283
1293
sqlErr := terror .ToSQLError (tErr )
@@ -1347,7 +1357,7 @@ func runReorgJobAndHandleErr(
1347
1357
}
1348
1358
// TODO(tangenta): get duplicate column and match index.
1349
1359
err = ingest .TryConvertToKeyExistsErr (err , allIndexInfos [0 ], tbl .Meta ())
1350
- if ! errorIsRetryable (err , job ) {
1360
+ if ! isRetryableJobError (err , job . ErrorCount ) {
1351
1361
logutil .DDLLogger ().Warn ("run add index job failed, convert job to rollback" , zap .Stringer ("job" , job ), zap .Error (err ))
1352
1362
ver , err = convertAddIdxJob2RollbackJob (jobCtx , job , tbl .Meta (), allIndexInfos , err )
1353
1363
if err1 := rh .RemoveDDLReorgHandle (job , reorgInfo .elements ); err1 != nil {
0 commit comments