From b61bd22c85fcee5afa15a67ea5f077e38317a0db Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Thu, 17 Apr 2025 19:59:43 +0400 Subject: [PATCH] server: fixed rare error on player reconnection with tournament; --- .../mage/server/tournament/TournamentSession.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Mage.Server/src/main/java/mage/server/tournament/TournamentSession.java b/Mage.Server/src/main/java/mage/server/tournament/TournamentSession.java index 650c80900b9..4168b869409 100644 --- a/Mage.Server/src/main/java/mage/server/tournament/TournamentSession.java +++ b/Mage.Server/src/main/java/mage/server/tournament/TournamentSession.java @@ -73,7 +73,20 @@ public class TournamentSession { setupTimeout(timeout); managerFactory.userManager().getUser(userId).ifPresent(user -> { int remaining = (int) futureTimeout.getDelay(TimeUnit.SECONDS); - user.ccConstruct(tournament.getPlayer(playerId).getDeck(), tableId, null, remaining); + + // can be called on reconnection, so make sure tournament still active + Deck lastDeck = tournament.getPlayer(playerId).getDeck(); + if (!tournament.isDoneConstructing() && lastDeck != null) { + user.ccConstruct(lastDeck, tableId, null, remaining); + } else { + logger.error("Found bad state on reconnection: player has tournament session, but don't have deck" + + ", deck " + lastDeck + + ", user " + user.getName() + + ", state " + tournament.getTournamentState() + + ", t type " + tournament.getTournamentType() + + ", t id " + tournament.getId() + ); + } }); } }