From fe7e9dc413d3f397091620f0c1430f98d45a2437 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Sat, 10 Jul 2004 01:32:54 +0000 Subject: [PATCH] Debugging code to try to track down the cause of the multiply released pending ratings. Somehow a game is getting ended twice even though the code should prevent it. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3055 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../threerings/parlor/game/GameManager.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/java/com/threerings/parlor/game/GameManager.java b/src/java/com/threerings/parlor/game/GameManager.java index ca6e6707d..f214159ba 100644 --- a/src/java/com/threerings/parlor/game/GameManager.java +++ b/src/java/com/threerings/parlor/game/GameManager.java @@ -1,5 +1,5 @@ // -// $Id: GameManager.java,v 1.71 2004/03/06 11:29:19 mdb Exp $ +// $Id: GameManager.java,v 1.72 2004/07/10 01:32:54 mdb Exp $ package com.threerings.parlor.game; @@ -464,7 +464,8 @@ public class GameManager extends PlaceManager // "[game=" + _gameobj.which() + "]."); // cancel the game if it was not already over - if (_gameobj.state != GameObject.GAME_OVER) { + if (_gameobj.state != GameObject.GAME_OVER && + _gameobj.state != GameObject.CANCELLED) { _gameobj.setState(GameObject.CANCELLED); } @@ -527,7 +528,10 @@ public class GameManager extends PlaceManager protected void handlePartialNoShow () { // cancel the game - _gameobj.setState(GameObject.CANCELLED); + if (_gameobj.state != GameObject.GAME_OVER && + _gameobj.state != GameObject.CANCELLED) { + _gameobj.setState(GameObject.CANCELLED); + } } /** @@ -652,6 +656,15 @@ public class GameManager extends PlaceManager */ public void endGame () { + // TEMP: debug pending rating repeat bug + if (_gameEndTrace != null) { + Log.warning("Requested to end already ended game " + + "[game=" + _gameobj.which() + "]."); + Thread.dumpStack(); + } + _gameEndTrace = new Exception().getStackTrace(); + // END TEMP + if (_gameobj.state != GameObject.IN_PLAY) { Log.debug("Refusing to end game that was not in play " + "[game=" + _gameobj.which() + "]."); @@ -660,7 +673,6 @@ public class GameManager extends PlaceManager _gameobj.startTransaction(); try { - // let the derived class do its pre-end stuff gameWillEnd(); @@ -968,6 +980,9 @@ public class GameManager extends PlaceManager /** Our delegate operator to tick AIs. */ protected TickAIDelegateOp _tickAIOp; + /** TEMP: debugging the pending rating double release bug. */ + protected StackTraceElement[] _gameEndTrace; + /** A list of all currently active game managers. */ protected static ArrayList _managers = new ArrayList();