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");
}