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. If we have one success and one delete, shouldn't do retry.
    // @formatter:off
    if (operationException == null || operationException.get() == null) {
      return false;
    }
    RouterErrorCode errorCode = ((RouterException) operationException.get()).getErrorCode();
    return (routerConfig.routerRepairWithReplicateBlobOnTtlUpdateEnabled
        && operationTracker.hasNotFound()
        && operationTracker.getSuccessCount() > 0
        && getPrecedenceLevel(errorCode) >= getPrecedenceLevel(RouterErrorCode.AmbryUnavailable));
    // @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/TtlUpdateOperation.java