private RouterErrorCode processServerError(ServerErrorCode serverErrorCode) {
    switch (serverErrorCode) {
      case BlobAuthorizationFailure:
        return RouterErrorCode.BlobAuthorizationFailure;
      case BlobDeleted:
        return RouterErrorCode.BlobDeleted;
      case BlobExpired:
        return RouterErrorCode.BlobExpired;
      case BlobNotFound:
        return RouterErrorCode.BlobDoesNotExist;
      case DiskUnavailable:
      case ReplicaUnavailable:
        return RouterErrorCode.AmbryUnavailable;
      case BlobUpdateNotAllowed:
        return RouterErrorCode.BlobUpdateNotAllowed;
      default:
        return RouterErrorCode.UnexpectedInternalError;
    }
  }
Processes {@link ServerErrorCode} received from {@code replica}. This method maps a {@link ServerErrorCode}
to a {@link RouterErrorCode}
@param serverErrorCode The ServerErrorCode received from the replica.
@return the {@link RouterErrorCode} mapped from server error code.
ambry-router/src/main/java/com/github/ambry/router/TtlUpdateOperation.java