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; }