diff --git a/Plan/common/src/main/java/com/djrapitops/plan/gathering/ShutdownDataPreservation.java b/Plan/common/src/main/java/com/djrapitops/plan/gathering/ShutdownDataPreservation.java index 09ea554c0..597d70817 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/gathering/ShutdownDataPreservation.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/gathering/ShutdownDataPreservation.java @@ -120,7 +120,7 @@ public class ShutdownDataPreservation extends TaskSystem.Task { List loadFinishedSessions() { if (!Files.exists(storeLocation)) return Collections.emptyList(); try (Stream lines = Files.lines(storeLocation)) { - return lines.map(FinishedSession::deserializeCSV) + return lines.map(this::deserializeToSession) .filter(Optional::isPresent) .map(Optional::get) .collect(Collectors.toList()); @@ -129,6 +129,15 @@ public class ShutdownDataPreservation extends TaskSystem.Task { } } + private Optional deserializeToSession(String line) { + try { + return FinishedSession.deserializeCSV(line); + } catch (Exception e) { + logger.warn("Ignoring line '" + line + "' in unsaved-sessions.csv due to: " + e); + return Optional.empty(); + } + } + public void preserveSessionsInCache() { long now = System.currentTimeMillis(); List finishedSessions = SessionCache.getActiveSessions().stream()