in src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueueCheckpoint.java [50:77]
public void run() {
String fileName = queue.getName() + "-checkpoint";
File checkpointFile = new File(checkpointDirectory, fileName + "-new");
QueueItemMapper mapper = new QueueItemMapper();
log.debug("started checkpointing");
try {
if (checkpointFile.exists()) {
assert checkpointFile.delete();
}
assert checkpointFile.createNewFile();
Collection<String> lines = new LinkedList<String>();
FileOutputStream fileOutputStream = new FileOutputStream(checkpointFile);
for (DistributionQueueEntry queueEntry : queue.getEntries(0, -1)) {
DistributionQueueItem item = queueEntry.getItem();
String line = mapper.writeQueueItem(item);
lines.add(line);
}
log.debug("parsed {} items", lines.size());
IOUtils.writeLines(lines, null, fileOutputStream, Charset.defaultCharset());
fileOutputStream.flush();
fileOutputStream.close();
boolean success = checkpointFile.renameTo(new File(checkpointDirectory, fileName));
log.debug("checkpoint succeeded: {}", success);
} catch (Exception e) {
log.error("failed checkpointing for queue {}", queue.getName());
}
}