From 414699f7d4f022ab5e194af130e05f4b702d6d5e Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Sat, 9 Dec 2023 16:22:29 +0400 Subject: [PATCH] network: improved stability (random errors related to #11285 and ConcurrentModificationException); --- .../src/main/java/mage/server/game/GameSessionWatcher.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Mage.Server/src/main/java/mage/server/game/GameSessionWatcher.java b/Mage.Server/src/main/java/mage/server/game/GameSessionWatcher.java index aa328f658cf..d05c1641f05 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameSessionWatcher.java +++ b/Mage.Server/src/main/java/mage/server/game/GameSessionWatcher.java @@ -97,8 +97,11 @@ public class GameSessionWatcher { } public GameView getGameView() { - GameView gameView = new GameView(game.getState(), game, null, userId); - processWatchedHands(game, userId, gameView); + // game view calculation can take some time, so use copy for thread save (protection from ConcurrentModificationException) + Game sourceGame = game.copy(); + + GameView gameView = new GameView(sourceGame.getState(), sourceGame, null, userId); + processWatchedHands(sourceGame, userId, gameView); return gameView; }