@@ -1352,8 +1352,22 @@ func (local *local) writeAndIngestByRange(
1352
1352
1353
1353
var regions []* split.RegionInfo
1354
1354
var err error
1355
+ << << << < HEAD
1355
1356
ctx , cancel := context .WithCancel (ctxt )
1356
1357
defer cancel ()
1358
+ == == == =
1359
+ // split region by given ranges
1360
+ failpoint .Inject ("failToSplit" , func (_ failpoint.Value ) {
1361
+ needSplit = true
1362
+ })
1363
+ logger := log .FromContext (ctx ).With (zap .String ("uuid" , engine .ID ())).Begin (zap .InfoLevel , "split and scatter ranges" )
1364
+ backOffTime := 10 * time .Second
1365
+ maxbackoffTime := 120 * time .Second
1366
+ for i := 0 ; i < maxRetryTimes ; i ++ {
1367
+ failpoint .Inject ("skipSplitAndScatter" , func () {
1368
+ failpoint .Break ()
1369
+ })
1370
+ >> >> >> > 2 a564d4a8ca (Lightning : increase backoff if split fails (#49518 ))
1357
1371
1358
1372
WriteAndIngest :
1359
1373
for retry := 0 ; retry < maxRetryTimes ; {
@@ -1400,6 +1414,23 @@ WriteAndIngest:
1400
1414
}
1401
1415
}
1402
1416
1417
+ << << << < HEAD
1418
+ == == == =
1419
+ log .FromContext (ctx ).Warn ("split and scatter failed in retry" , zap .String ("engine ID" , engine .ID ()),
1420
+ log .ShortError (err ), zap .Int ("retry" , i ))
1421
+ select {
1422
+ case <- time .After (backOffTime ):
1423
+ case <- ctx .Done ():
1424
+ return ctx .Err ()
1425
+ }
1426
+ backOffTime *= 2
1427
+ if backOffTime > maxbackoffTime {
1428
+ backOffTime = maxbackoffTime
1429
+ }
1430
+ }
1431
+ logger .End (zap .ErrorLevel , err )
1432
+ if err != nil {
1433
+ >> >> >> > 2 a564d4a8ca (Lightning : increase backoff if split fails (#49518 ))
1403
1434
return err
1404
1435
}
1405
1436
0 commit comments