From de2f2ca49cce4f4bf8fd0b86004bc29a9029db92 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 06 Jan 2019 13:50:52 +0000
Subject: [PATCH] ConcurrentModificationException while multiple loading request of different repo archives.
---
borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ArchiveFilelistCache.java | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ArchiveFilelistCache.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ArchiveFilelistCache.java
index 04abb8c..6a3ee1a 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ArchiveFilelistCache.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ArchiveFilelistCache.java
@@ -53,7 +53,9 @@
log.info("Saving archive content as file list: " + file.getAbsolutePath());
try (ObjectOutputStream outputStream = new ObjectOutputStream(new BufferedOutputStream(new GzipCompressorOutputStream(new FileOutputStream(file))))) {
outputStream.writeObject(filesystemItems.size());
- for (BorgFilesystemItem item : filesystemItems) {
+ Iterator<BorgFilesystemItem> it = filesystemItems.iterator();
+ while(it.hasNext()) {
+ BorgFilesystemItem item = it.next();
outputStream.writeObject(item);
}
outputStream.writeObject("EOF");
@@ -118,13 +120,13 @@
return null;
}
log.info("Loading archive content as file list from: " + file.getAbsolutePath());
- List<BorgFilesystemItem> list = null;
try {
// Set last modified time of file:
Files.setAttribute(file.toPath(), "lastModifiedTime", FileTime.fromMillis(System.currentTimeMillis()));
} catch (IOException ex) {
log.error("Can't set lastModifiedTime on file '" + file.getAbsolutePath() + "'. Pruning old cache files may not work.");
}
+ List<BorgFilesystemItem> list = new ArrayList<>();
try (ObjectInputStream inputStream = new ObjectInputStream(new BufferedInputStream(new GzipCompressorInputStream(new FileInputStream(file))))) {
Object obj = inputStream.readObject();
if (!(obj instanceof Integer)) {
@@ -132,7 +134,6 @@
return null;
}
int size = (Integer) obj;
- list = new ArrayList<>();
int fileNumber = -1;
for (int i = 0; i < size; i++) {
++fileNumber;
--
Gitblit v1.10.0