private void addDirect(final Path sourceDir) {
        LOGGER.debug("'{}' - addDirect(), dir: {}", destinationName, sourceDir);
        // Delay the forward, if one is configured. If not configured, this is a noop.
        delayForwardingFunc.run();
        // Now pass it directly to the delegate destination with no queuing/retrying
        try {
            delegateDestination.add(sourceDir);
        } catch (Exception e) {
            LOGGER.error(
                    "Error sending '" + FileUtil.getCanonicalPath(sourceDir)
                    + "' to " + getDestinationType() + " forward destination '"
                    + destinationName + "' "
                    + LogUtil.exceptionMessage(getCause(e))
                    + (e instanceof ForwardException fe
                            ? " Feed: '" + fe.getFeedName() + "'. HTTP code: " + fe.getHttpResponseCode() + ". "
                            : "")
                    + " Will not retry, moving to failure destination "
                    + failureDestination.getStoreDir(), e);
            failureDestination.add(sourceDir);
        }
    }
Holds the state relating to retries. Held in binary form.
stroom-proxy/stroom-proxy-app/src/main/java/stroom/proxy/app/handler/RetryingForwardDestination.java