private void failure()

in src/main/java/org/apache/sling/distribution/journal/bookkeeper/BookKeeper.java [268:296]


    private void failure(PackageMessage pkgMsg, long offset, Date createdTime, Exception e) throws DistributionException {
        subscriberMetrics.getFailedPackageImports().mark();

        String pubAgentName = pkgMsg.getPubAgentName();
        int retries = packageRetries.get(pubAgentName);
        boolean giveUp = errorQueueEnabled && retries >= config.getMaxRetries();
        String retriesSt = errorQueueEnabled ? Integer.toString(config.getMaxRetries()) : "infinite";
        String action = giveUp ? "skip the package" : "retry later";
        String msg = format("Failed attempt (%s/%s) to import the distribution package %s at offset=%d because of '%s', the importer will %s", retries, retriesSt, pkgMsg.toString(false), offset, e.getMessage(), action);
        try {
            LogMessage logMessage = getLogMessage(pubAgentName, msg, e);
            logSender.accept(logMessage);
        } catch (Exception e2) {
            log.warn("Error sending log message", e2);
        }
        Event event = DistributionFailureEvent.build(pkgMsg, offset, createdTime, retries, config.getMaxRetries(), giveUp, e);
        eventAdmin.postEvent(event);
        if (giveUp) {
            log.warn(msg, e);
            removeFailedPackage(pkgMsg, offset);
            subscriberMetrics.getPermanentImportErrors().increment();
        } else {
            if (retries == NUM_ERRORS_BLOCKING) { // Only count after a few retries to allow transient errors to recover
                subscriberMetrics.getBlockingImportErrors().increment();
            }
            packageRetries.increase(pubAgentName);
            throw new DistributionException(msg, e);
        }
    }