satellite/repair/repairer: if not enough nodes for repair order limits, increment metric and log as irreparable segment
Change-Id: I4bd46f28d64278c8d463e885ad221aafb6ce7cf3
This commit is contained in:
parent
2340429ea8
commit
26f839a445
@ -379,7 +379,7 @@ func (service *Service) CreateGetRepairOrderLimits(ctx context.Context, bucket m
|
|||||||
}
|
}
|
||||||
|
|
||||||
if limitsCount < redundancy.RequiredCount() {
|
if limitsCount < redundancy.RequiredCount() {
|
||||||
err = Error.New("not enough nodes available: got %d, required %d", limitsCount, redundancy.RequiredCount())
|
err = ErrDownloadFailedNotEnoughPieces.New("not enough nodes available: got %d, required %d", limitsCount, redundancy.RequiredCount())
|
||||||
return nil, storj.PiecePrivateKey{}, nil, errs.Combine(err, nodeErrors.Err())
|
return nil, storj.PiecePrivateKey{}, nil, errs.Combine(err, nodeErrors.Err())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,6 +221,18 @@ func (repairer *SegmentRepairer) Repair(ctx context.Context, queueSegment *queue
|
|||||||
// Create the order limits for the GET_REPAIR action
|
// Create the order limits for the GET_REPAIR action
|
||||||
getOrderLimits, getPrivateKey, cachedIPsAndPorts, err := repairer.orders.CreateGetRepairOrderLimits(ctx, metabase.BucketLocation{}, segment, healthyPieces)
|
getOrderLimits, getPrivateKey, cachedIPsAndPorts, err := repairer.orders.CreateGetRepairOrderLimits(ctx, metabase.BucketLocation{}, segment, healthyPieces)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if orders.ErrDownloadFailedNotEnoughPieces.Has(err) {
|
||||||
|
mon.Counter("repairer_segments_below_min_req").Inc(1) //mon:locked
|
||||||
|
stats.repairerSegmentsBelowMinReq.Inc(1)
|
||||||
|
mon.Meter("repair_nodes_unavailable").Mark(1) //mon:locked
|
||||||
|
stats.repairerNodesUnavailable.Mark(1)
|
||||||
|
|
||||||
|
repairer.log.Warn("irreparable segment",
|
||||||
|
zap.String("StreamID", queueSegment.StreamID.String()),
|
||||||
|
zap.Uint64("Position", queueSegment.Position.Encode()),
|
||||||
|
zap.Error(err),
|
||||||
|
)
|
||||||
|
}
|
||||||
return false, orderLimitFailureError.New("could not create GET_REPAIR order limits: %w", err)
|
return false, orderLimitFailureError.New("could not create GET_REPAIR order limits: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user