config-rest/src/main/java/com/hpe/caf/config/rest/RestConfigurationSource.java
private Response remoteCall(final String path, final String configName)
        throws ConfigurationException, InterruptedException
    {
        int i = 0;
        while (true) {
            try {
                return remote.getRemoteConfiguration(path, configName);
            } catch (final HttpConfigurationException nfe) {
                // don't retry if we have an explicit failure from the HTTP server
                throw nfe;
            } catch (final ConfigurationException e) {
                LOG.debug("HTTP client call failed, retrying");
                if (i == retries) {
                    throw e;
                } else {
                    Thread.sleep((long) Math.pow(2, i) * 1000L);
                }
                i++;
            }
        }
    }
private Response remoteCall(final String path, final String configName)
        throws ConfigurationException, InterruptedException
    {
        int i = 0;
        while (true) {
            try {
                return remote.getRemoteConfiguration(path, configName);
            } catch (final HttpConfigurationException nfe) {
                // don't retry if we have an explicit failure from the HTTP server
                throw nfe;
            } catch (final ConfigurationException e) {
                LOG.debug("HTTP client call failed, retrying");
                if (i == retries) {
                    throw e;
                } else {
                    Thread.sleep((long) Math.pow(2, i) * 1000L);
                }
                i++;
            }
        }
    }
Perform exponential backoff/retry of acquiring a data file from an HTTP source.

@param configName the configuration file name
@return the HTTP response
@throws ConfigurationException if the data cannot be acquired
@throws InterruptedException usually if the application is shutting down