protected LogicalResponse getDataFromVault()

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