public List apply()

in src/main/java/com/google/cloud/solutions/bqremoteencryptionfn/fns/dlp/DlpRequestBatchExecutor.java [115:149]


    public List<DlpResponseT> apply(DlpRequestT dlpRequest) {
      var dlpCallFn = dlpCallFnFactory.apply(dlpClient);
      var retries = 0;

      var requestsToSend = List.of(dlpRequest);

      do {
        try {

          logger.atInfo().log("Sending Try(%s): ", retries);

          return requestsToSend.stream().map(dlpCallFn).toList();

        } catch (InvalidArgumentException invalidArgumentException) {

          logger.atWarning().log(
              "DLP Caller InvalidArgument: msg: %s, retryable: %s",
              invalidArgumentException.getMessage(), invalidArgumentException.isRetryable());

          if (!invalidArgumentException.isRetryable()
              || !invalidArgumentException
                  .getMessage()
                  .toLowerCase()
                  .contains("retry with a smaller request")) {
            throw invalidArgumentException;
          }
        }

        requestsToSend =
            requestsToSend.stream().map(this::splitRowsToHalf).flatMap(List::stream).toList();

      } while (retries++ < 10);

      throw new RuntimeException("unable to receive DLP Response after retries");
    }