From: AsamK Date: Mon, 15 Apr 2024 17:23:41 +0000 (+0200) Subject: Cache newly created session record X-Git-Tag: v0.13.3~8 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/71de8e63cce8633b020ee49ed62baf0cf838ca54 Cache newly created session record Fixes #1481 --- diff --git a/lib/src/main/java/org/asamk/signal/manager/storage/sessions/SessionStore.java b/lib/src/main/java/org/asamk/signal/manager/storage/sessions/SessionStore.java index 3f3ba4d6..067dc5d3 100644 --- a/lib/src/main/java/org/asamk/signal/manager/storage/sessions/SessionStore.java +++ b/lib/src/main/java/org/asamk/signal/manager/storage/sessions/SessionStore.java @@ -59,8 +59,11 @@ public class SessionStore implements SignalServiceSessionStore { public SessionRecord loadSession(SignalProtocolAddress address) { final var key = getKey(address); try (final var connection = database.getConnection()) { - final var session = loadSession(connection, key); - return Objects.requireNonNullElseGet(session, SessionRecord::new); + final var sessionRecord = Objects.requireNonNullElseGet(loadSession(connection, key), SessionRecord::new); + synchronized (cachedSessions) { + cachedSessions.put(key, sessionRecord); + } + return sessionRecord; } catch (SQLException e) { throw new RuntimeException("Failed read from session store", e); } @@ -148,7 +151,9 @@ public class SessionStore implements SignalServiceSessionStore { try (final var connection = database.getConnection()) { final var session = loadSession(connection, key); - return isActive(session); + final var active = isActive(session); + logger.trace("Contains session {}: {} (active: {})", address, session != null, active); + return active; } catch (SQLException e) { throw new RuntimeException("Failed read from session store", e); }