Page MenuHomePhabricator

RLQ.push callbacks added after mediawiki.base arrives don't get called
Closed, ResolvedPublic

Description

global.js
$( document ).ready( function () {
	console.log( mw.config.get( 'wgBackendResponseTime' ), mw.config.get( 'wgHostname' ) );
} );

works only in debug=true, otherwise you just get nulls.

The source had <script>(window.RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgBackendResponseTime":203,"wgHostname":"mw1321"});});</script> but it doesn't appear to actually get executed? Or does but RLQ doesn't get run? Or something breaks somewhere along the way.

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

On most pages, I find that logging those values from the browser console works both in debug mode and non-debug mode.

However, there is definitely an issue here, maybe two.

  1. On some pages, the RLQ.push from the bottom never fires. Resulting in these indefinitely staying undefined.
  2. Maybe the document-ready event may fire before the RLQ is processed in debug mode, given async stuff. (Unconfirmed suspicion)

The former I have confirmed and is due to RLQ.push() being re-defined in an incorrect way half-way through the loading of the page. In those cases, the following is observed.

mw.config.get( 'wgBackendResponseTime' )
//> null

RLQ.push(function () { console.log('hello'); })
//> undefined

RLQ.push
//> ƒ (entry){mw.loader.using(entry[0],entry[1]);}

On most cases, the above is not true, but in some cases it is. It looks like my recent refactor around adding lazy-loading module support to RLQ-push didn't account for a certain race condition we are observing here.

Krinkle renamed this task from wgBackendResponseTime/wgHostname not getting set in mw.config without debug=true to RLQ.push callbacks added after mediawiki.base arrives don't get called.Oct 26 2018, 9:32 PM
Krinkle claimed this task.
Krinkle triaged this task as High priority.
Krinkle added a project: Regression.
Krinkle added a project: MW-1.31-release.

Change 470086 had a related patch set uploaded (by Krinkle; owner: Krinkle):
[mediawiki/core@master] resoureloader: Restore support for plain callbacks in mediawiki.base's RLQ

https://gerrit.wikimedia.org/r/470086

Change 470086 merged by jenkins-bot:
[mediawiki/core@master] resoureloader: Restore support for plain callbacks in mediawiki.base's RLQ

https://gerrit.wikimedia.org/r/470086

Appears to be working well in beta, ty.

Keeping open until backports are done for releases containing this issue.

Change 470177 had a related patch set uploaded (by Krinkle; owner: Krinkle):
[mediawiki/core@wmf/1.33.0-wmf.1] resoureloader: Restore support for plain callbacks in mediawiki.base's RLQ

https://gerrit.wikimedia.org/r/470177

Change 470178 had a related patch set uploaded (by Krinkle; owner: Krinkle):
[mediawiki/core@REL1_32] resoureloader: Restore support for plain callbacks in mediawiki.base's RLQ

https://gerrit.wikimedia.org/r/470178

Change 470178 merged by jenkins-bot:
[mediawiki/core@REL1_32] resoureloader: Restore support for plain callbacks in mediawiki.base's RLQ

https://gerrit.wikimedia.org/r/470178

Change 470177 merged by jenkins-bot:
[mediawiki/core@wmf/1.33.0-wmf.1] resoureloader: Restore support for plain callbacks in mediawiki.base's RLQ

https://gerrit.wikimedia.org/r/470177

Mentioned in SAL (#wikimedia-operations) [2018-10-27T22:22:20Z] <krinkle@deploy1001> Synchronized php-1.33.0-wmf.1/resources/src: T208093- I25012a2c6f (duration: 00m 58s)