From 94fcd882231f3100d4e04ead1986ed822b174e6d Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Fri, 20 Mar 2026 17:31:44 +0100 Subject: [PATCH] Fix: Avoid Race condition in create method of SessionManager --- .../network/sessions/SessionManager.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/SessionManager.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/SessionManager.java index 9ad41cd..b78439b 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/SessionManager.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/network/sessions/SessionManager.java @@ -32,18 +32,19 @@ public class SessionManager { */ public Session create(TransportLayer transport) { Session session = new Session(transport, eventBus); - SessionReader reader = new SessionReader(session, eventBus); - Thread readerThread = new Thread(reader, "session-" + session.getId().value() + "-reader"); - readerThread.start(); - SessionWriter writer = new SessionWriter(session); - Thread writerThread = new Thread(writer, "session-" + session.getId().value() + "-writer"); - writerThread.start(); - SessionHandle handle = new SessionHandle(session, readerThread, writerThread); - sessions.put(session.getId(), handle); - logger.debug("Created new session {}", session.getId().value()); + Thread readerThread = Thread.ofVirtual() + .name("session-" + session.getId().value() + "-reader") + .unstarted(reader); + Thread writerThread = Thread.ofVirtual() + .name("session-" + session.getId().value() + "-writer") + .unstarted(writer); + + sessions.put(session.getId(), new SessionHandle(session, readerThread, writerThread)); + readerThread.start(); + writerThread.start(); return session; }