private boolean shouldReplicateBlobAndRetry() {
    // the conditions to trigger ReplicateBlob and retry the original operation:
    // 1. the feature is enabled.
    // 2. and at least one replica returned NOT_FOUND status.
    // 3. and at least one replica returned successful status.
    // 4. and error code precedence is over AmbryUnavailable. We don't do replication if there BlobExpired or TooManyRequests.
    // 5. It's not a delete request from the BackgroundDeleter. We don't do on-demand replication for background deleter.
    if (operationException.get() == null) {
      return false;
    }
    RouterErrorCode errorCode = ((RouterException) operationException.get()).getErrorCode();
    // @formatter:off
    return (routerConfig.routerRepairWithReplicateBlobOnDeleteEnabled && operationTracker.hasNotFound()
        && operationTracker.getSuccessCount() > 0
        && getPrecedenceLevel(errorCode) >= getPrecedenceLevel(RouterErrorCode.AmbryUnavailable)
        && !isServiceBackgroundDeleter());
    // @formatter:on
  }
Check if we should replicate the blob and retry the operation.
@return true if need to do the retry.
ambry-router/src/main/java/com/github/ambry/router/DeleteOperation.java