server: fixed rare error on player reconnection with tournament;

This commit is contained in:
Oleg Agafonov 2025-04-17 19:59:43 +04:00
parent 378d6c6c22
commit b61bd22c85

View file

@ -73,7 +73,20 @@ public class TournamentSession {
setupTimeout(timeout); setupTimeout(timeout);
managerFactory.userManager().getUser(userId).ifPresent(user -> { managerFactory.userManager().getUser(userId).ifPresent(user -> {
int remaining = (int) futureTimeout.getDelay(TimeUnit.SECONDS); 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()
);
}
}); });
} }
} }