Ha ha ha. During normal adventuring in the Relay Browser:
Code:
Deferring listeners while firing deferred listeners
class java.lang.Exception: Deferring listeners while firing deferred listeners
java.lang.Exception: Deferring listeners while firing deferred listeners
at net.sourceforge.kolmafia.StaticEntity.printStackTrace(StaticEntity.java:387)
at net.sourceforge.kolmafia.listener.ListenerRegistry.fireListener(ListenerRegistry.java:171)
at net.sourceforge.kolmafia.listener.PreferenceListenerRegistry.firePreferenceChanged(PreferenceListenerRegistry.java:54)
at net.sourceforge.kolmafia.KoLCharacter.updateStatus(KoLCharacter.java:5399)
at net.sourceforge.kolmafia.KoLCharacter.setHP(KoLCharacter.java:1718)
at net.sourceforge.kolmafia.request.CharPaneRequest.handleMiscPoints(CharPaneRequest.java:622)
at net.sourceforge.kolmafia.request.CharPaneRequest.handleExpandedMode(CharPaneRequest.java:463)
at net.sourceforge.kolmafia.request.CharPaneRequest.processResults(CharPaneRequest.java:263)
at net.sourceforge.kolmafia.request.GenericRequest.processResponse(GenericRequest.java:2426)
at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:2384)
at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:1998)
at net.sourceforge.kolmafia.request.GenericRequest.externalExecute(GenericRequest.java:1565)
at net.sourceforge.kolmafia.request.GenericRequest.execute(GenericRequest.java:1548)
at net.sourceforge.kolmafia.request.GenericRequest.run(GenericRequest.java:1310)
at net.sourceforge.kolmafia.request.RelayRequest.run(RelayRequest.java:3073)
at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:286)
at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:249)
at net.sourceforge.kolmafia.webui.RelayAgent.readServerResponse(RelayAgent.java:567)
at net.sourceforge.kolmafia.webui.RelayAgent.performRelay(RelayAgent.java:161)
at net.sourceforge.kolmafia.webui.RelayAgent.run(RelayAgent.java:134)
and
Code:
Deferring listeners while firing deferred listeners
class java.lang.Exception: Deferring listeners while firing deferred listeners
java.lang.Exception: Deferring listeners while firing deferred listeners
at net.sourceforge.kolmafia.StaticEntity.printStackTrace(StaticEntity.java:387)
at net.sourceforge.kolmafia.listener.ListenerRegistry.fireListener(ListenerRegistry.java:171)
at net.sourceforge.kolmafia.listener.PreferenceListenerRegistry.firePreferenceChanged(PreferenceListenerRegistry.java:54)
at net.sourceforge.kolmafia.KoLCharacter.updateStatus(KoLCharacter.java:5399)
at net.sourceforge.kolmafia.KoLCharacter.setMP(KoLCharacter.java:1768)
at net.sourceforge.kolmafia.request.CharPaneRequest.handleMiscPoints(CharPaneRequest.java:641)
at net.sourceforge.kolmafia.request.CharPaneRequest.handleExpandedMode(CharPaneRequest.java:463)
at net.sourceforge.kolmafia.request.CharPaneRequest.processResults(CharPaneRequest.java:263)
at net.sourceforge.kolmafia.request.GenericRequest.processResponse(GenericRequest.java:2426)
at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:2384)
at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:1998)
at net.sourceforge.kolmafia.request.GenericRequest.externalExecute(GenericRequest.java:1565)
at net.sourceforge.kolmafia.request.GenericRequest.execute(GenericRequest.java:1548)
at net.sourceforge.kolmafia.request.GenericRequest.run(GenericRequest.java:1310)
at net.sourceforge.kolmafia.request.RelayRequest.run(RelayRequest.java:3073)
at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:286)
at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:249)
at net.sourceforge.kolmafia.webui.RelayAgent.readServerResponse(RelayAgent.java:567)
at net.sourceforge.kolmafia.webui.RelayAgent.performRelay(RelayAgent.java:161)
at net.sourceforge.kolmafia.webui.RelayAgent.run(RelayAgent.java:134)
and
Code:
Deferring listeners while firing deferred listeners
class java.lang.Exception: Deferring listeners while firing deferred listeners
java.lang.Exception: Deferring listeners while firing deferred listeners
at net.sourceforge.kolmafia.StaticEntity.printStackTrace(StaticEntity.java:387)
at net.sourceforge.kolmafia.listener.ListenerRegistry.fireListener(ListenerRegistry.java:171)
at net.sourceforge.kolmafia.listener.PreferenceListenerRegistry.firePreferenceChanged(PreferenceListenerRegistry.java:54)
at net.sourceforge.kolmafia.KoLCharacter.updateStatus(KoLCharacter.java:5399)
at net.sourceforge.kolmafia.request.CharPaneRequest.processResults(CharPaneRequest.java:266)
at net.sourceforge.kolmafia.request.GenericRequest.processResponse(GenericRequest.java:2426)
at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:2384)
at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:1998)
at net.sourceforge.kolmafia.request.GenericRequest.externalExecute(GenericRequest.java:1565)
at net.sourceforge.kolmafia.request.GenericRequest.execute(GenericRequest.java:1548)
at net.sourceforge.kolmafia.request.GenericRequest.run(GenericRequest.java:1310)
at net.sourceforge.kolmafia.request.RelayRequest.run(RelayRequest.java:3073)
at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:286)
at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:249)
at net.sourceforge.kolmafia.webui.RelayAgent.readServerResponse(RelayAgent.java:567)
at net.sourceforge.kolmafia.webui.RelayAgent.performRelay(RelayAgent.java:161)
at net.sourceforge.kolmafia.webui.RelayAgent.run(RelayAgent.java:134)
The Relay Browser handles each request in a new thread.
We submit a request which triggers a charpane refresh.
We fire deferred listeners while processing the response.
Meanwhile, the browser asks for charpane.php
We get the response and GenericRequest defers listeners before processing the response
CharPaneRequest wants to fire listeners, so they get deferred.
Seems like we should simply synchronize on the deferred list when adding to it, in addition to when we iterate over it.