Catch session deserialization errors during enable

This commit is contained in:
Aurora Lahtela 2023-01-06 19:39:53 +02:00
parent 85b4a51515
commit 97b9a18cea

View File

@ -120,7 +120,7 @@ public class ShutdownDataPreservation extends TaskSystem.Task {
List<FinishedSession> loadFinishedSessions() {
if (!Files.exists(storeLocation)) return Collections.emptyList();
try (Stream<String> 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<FinishedSession> 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<FinishedSession> finishedSessions = SessionCache.getActiveSessions().stream()