error from server log
- Dominant language
- Java
- Stars
- 2.4k
- Forks
- 940
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 160
Description
alpha server running locally
> ERROR 2024-08-24 15:18:02,599 Catch unhandled error in CALL thread: null =>[CALL - 5] ThreadExecutorImpl$CachedThreadPoolWithException.afterExecute
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
at java.util.ArrayList$Itr.next(ArrayList.java:859)
at mage.util.CardUtil.deepCopyList(CardUtil.java:1906)
at mage.util.CardUtil.deepCopyObject(CardUtil.java:1858)
at mage.abilities.TriggeredAbilities.(TriggeredAbilities.java:65)
at mage.abilities.TriggeredAbilities.copy(TriggeredAbilities.java:318)
at mage.game.GameState.(GameState.java:170)
at mage.game.GameState.copy(GameState.java:295)
at mage.game.GameImpl.(GameImpl.java:203)
at mage.game.TwoPlayerDuel.(TwoPlayerDuel.java:20)
at mage.game.TwoPlayerDuel.copy(TwoPlayerDuel.java:41)
at mage.game.TwoPlayerDuel.copy(TwoPlayerDuel.java:12)
at mage.server.game.GameSessionPlayer.prepareGameView(GameSessionPlayer.java:214)
at mage.server.game.GameSessionPlayer.getGameView(GameSessionPlayer.java:200)
at mage.server.game.GameSessionWatcher.lambda$update$0(GameSessionWatcher.java:54)
at java.util.Optional.ifPresent(Optional.java:159)
at mage.server.game.GameSessionWatcher.update(GameSessionWatcher.java:54)
at mage.server.game.GameController.updateGame(GameController.java:824)
at mage.server.game.GameController.lambda$init$3aa0d15c$1(GameController.java:124)
at mage.game.events.EventDispatcher.fireEvent(EventDispatcher.java:28)
at mage.game.events.TableEventSource.fireTableEvent(TableEventSource.java:44)
at mage.game.GameImpl.fireUpdatePlayersEvent(GameImpl.java:3158)
at mage.game.GameImpl.rollbackTurns(GameImpl.java:3965)
at mage.server.game.GameController.sendPlayerAction(GameController.java:540)
at mage.server.game.GameManagerImpl.sendPlayerAction(GameManagerImpl.java:127)
at mage.server.MageServerImpl.lambda$null$39(MageServerImpl.java:828)
at java.util.Optional.ifPresent(Optional.java:159)
at mage.server.MageServerImpl.lambda$sendPlayerAction$40(MageServerImpl.java:826)
at mage.server.MageServerImpl.lambda$execute$69(MageServerImpl.java:1161)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the stack trace in mage.util.CardUtil.deepCopyList at CardUtil.java:1906, then inspect TriggeredAbilities.java:65 and its copy method at line 318. Trace how GameState.copy and TwoPlayerDuel.copy are reached during GameSessionPlayer.prepareGameView and rollbackTurns. Done means identifying and resolving the concurrent modification, but the issue provides no reproduction or explicit verification test.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100