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