in plugins/vault/src/main/java/co/elastic/gradle/vault/VaultExtension.java [135:158]
protected LogicalResponse getDataFromVault(String path) throws VaultException {
final Vault driver = getDriver();
LogicalResponse response = null;
for (int retries = 0; retries < 5; retries++) {
response = driver.logical().read(path);
if (response.getData().isEmpty()) {
if (retries == 4) { // Check if it's the last retry
throw new GradleException("No data was available in vault path " + path);
}
} else {
break;
}
try {
// Exponential back-off: 2^(retries + 2) * 500 milliseconds (e.g., 2000 ms, 4000 ms, 8000 ms, ...)
long backOffTime = (long) Math.pow(2, retries + 2) * 500;
TimeUnit.MILLISECONDS.sleep(backOffTime);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new GradleException("Retry interrupted for vault path " + path, e);
}
}
return response;
}