borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -172,23 +172,21 @@ .setArchive(archive.getName()) .setParams("--json-lines") .setDescription("Loading list of files of archive '" + archive.getName() + "' of repo '" + repoConfig.getDisplayName() + "'."); List<BorgFilesystemItem> content = new ArrayList<>(); // The returned job might be an already queued or running one! BorgJob job = BorgQueueExecutor.getInstance().execute(new BorgJob(command) { BorgJob<List<BorgFilesystemItem>> job = BorgQueueExecutor.getInstance().execute(new BorgJob<List<BorgFilesystemItem>>(command) { @Override protected void processStdOutLine(String line, int level) { BorgFilesystemItem item = JsonUtils.fromJson(BorgFilesystemItem.class, line); item.setMtime(DateUtils.format(item.getMtime())); content.add(item); payload.add(item); } }); job.payload = new ArrayList<>(); JobResult<String> jobResult = job.getResult(); if (jobResult.getStatus() != JobResult.Status.OK) { return content; return job.getPayload(); } Collections.sort(content); // Sort by path. return content; return job.payload; } /** borgbutler-core/src/main/java/de/micromata/borgbutler/BorgJob.java
@@ -17,10 +17,12 @@ * A queue is important because Borg doesn't support parallel calls for one repository. * For each repository one single queue is allocated. */ public class BorgJob extends AbstractCommandLineJob<String> { public class BorgJob<T> extends AbstractCommandLineJob<String> { private Logger log = LoggerFactory.getLogger(BorgJob.class); @Getter private BorgCommand command; @Getter protected T payload; public BorgJob(BorgCommand command) { this.command = command; borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ArchiveFilelistCache.java
@@ -48,6 +48,7 @@ return; } savingFiles.add(file); Collections.sort(filesystemItems); // Sort by path. } log.info("Saving archive content as file list: " + file.getAbsolutePath()); try (ObjectOutputStream outputStream = new ObjectOutputStream(new BufferedOutputStream(new GzipCompressorOutputStream(new FileOutputStream(file))))) {