Page 1 of 1

Try to lock interface while it is already locked !

Posted: 02 June 2020, 00:19
by Lymon Flowers
When going through a replay of my game (Downforce), I regularly get error messages in the javascript console and the interface blocks untill I click on the "next move". The error message is: Try to lock interface while it is already locked !

It happens at distinct places like move like move #137 of table https://boardgamearena.com/table?table=92381834

My guess: the onEnteringState method of my class does ajax calls while the interface is still locked from a previous one. Any idea on this? It looks like a studio bug, but maybe I am doing something wrong.

The full error stack:

Code: Select all

Try to lock interface while it is already locked ! 3 ly_studio.js:2:652013
During notification gameStateChange
this.notifqueue[i] is undefined
ajaxcall@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:638508
onEnteringState@https://x.boardgamearena.net/data/themereleases/current/games/downforce/200528-0049/downforce.js:1:5434
ntf_gameStateChange@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:725390
hitch/<@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:33825
_269@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:60682
dojo/on/</on.emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:54866
dojo/on/</on.emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:55648
emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:59320
publish@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:58881
publish@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:51062
dispatchNotification@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:554583
dispatchNotifications@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:548746
onNotification@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:544763
sendNextArchive@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:662559
onEndDisplayLastArchive@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:668064
ntf_end_archivewaitingdelay@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:727726
hitch/<@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:33825
_269@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:60682
dojo/on/</on.emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:54866
dojo/on/</on.emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:55648
emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:59320
publish@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:58881
publish@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:51062
dispatchNotification@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:554583
dispatchNotifications@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:548746
onSynchronousNotificationEnd@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:564111
hitch/<@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:33825
_269@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:60682
dojo/on/</on.emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:54866
dojo/on/</on.emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:55648
emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:59320
publish@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:58881
publish@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:51062
endnotif@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:451633
@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:1

Excerpt of my method:

Code: Select all

onEnteringState: function( stateName, args )
{
    switch( stateName )
    {
	// [...]
	case 'moveCar':
	// [...]
	if ( movements . color == 'Joker' )
	{
	    this.ajaxcall( this.gameUrl + "chooseJokerColor.html", { lock: true }, this, function( result ) { } );
	    return;
	}
	// [...]
    }
}

Re: Try to lock interface while it is already locked !

Posted: 02 June 2020, 00:51
by Tisaac
Just curious : why would you need an AJAX call when entering a state ?

Re: Try to lock interface while it is already locked !

Posted: 02 June 2020, 14:33
by Lymon Flowers
I realize that what is achieved there could be much more efficiently done server-side, maybe that is the answer :mrgreen:

Re: Try to lock interface while it is already locked !

Posted: 02 June 2020, 22:42
by Benoit314
Yes, I would think that a request sent to the server without any user input would be better entirely on the server-side.

That could be why you got that error, because maybe (I'm just assuming) the interface is locked when buttons are updating and get unlocked only after.