Page MenuHomePhabricator

Fatal error: Class undefined: ResourceLoaderTemplateModule in /srv/mediawiki/php-master/includes/resourceloader/ResourceLoader.php on line 506
Closed, ResolvedPublic

Description

see e.g. http://en.wikipedia.beta.wmflabs.org/wiki/Links_VisualEditor_Test?vehidebetadialog=true&veaction=edit

see screen shot for error


Version: unspecified
Severity: blocker

Details

Reference
bz73377

Event Timeline

bzimport raised the priority of this task from to Unbreak Now!.Nov 22 2014, 3:55 AM
bzimport set Reference to bz73377.
bzimport added a subscriber: Unknown Object (MLST).

Created attachment 17121
Reference error

Attached:

Screen_Shot_2014-11-13_at_10.29.37_AM.png (1×2 px, 373 KB)

As visible in the first line of your screenshot, there's a load.php request that's 503ing. For me, it's an earlier load.php request that 503s (the startup request), and so I don't get the error, but no JavaScript works.

Is beta labs broken again?

Nov 13 18:22:44 deployment-mediawiki01 hhvm: #012Fatal error: Class undefined: ResourceLoaderTemplateModule in /srv/mediawiki/php-master/includes/resourceloader/ResourceLoader.php on line 506
Nov 13 18:22:44 deployment-mediawiki01 hhvm: {#012 "message": "Class undefined: ResourceLoaderTemplateModule",#012 "file": "/srv/mediawiki/php-master/includes/resourceloader/ResourceLoader.php",#012 "line": 506,#012 "context": [],#012 "backtrace": [#012 {#012 "file": "/srv/mediawiki/php-master/includes/resourceloader/ResourceLoader.php",#012 "line": 506#012 },#012 {#012 "file": "/srv/mediawiki/php-master/includes/resourceloader/ResourceLoader.php",#012 "line": 111,#012 "function": "getModule",#012 "class": "ResourceLoader",#012 "type": "->",#012 "args": [#012 "zerobanner"#012 ]#012 },#012 {#012 "file": "/srv/mediawiki/php-master/includes/resourceloader/ResourceLoaderStartUpModule.php",#012 "line": 438,#012 "function": "preloadModuleInfo",#012 "class": "ResourceLoader",#012 "type": "->",#012 "args": [#012 [#012 "site",#012 "noscript",#012 "startup",#012 "filepage",#012 "user.groups",#012 "user",#012 "user.cssprefs",#012 "user.options",#012 "user.tokens",#012 "mediawiki.language.data",#012 "mediawiki.skinning.elements",#012 "mediawiki.skinning.content",#012 "mediawiki.skinning.interface",#012 "mediawiki.skinning.content.parsoid",#012 "mediawiki.skinning.content.externallinks",#012 "jquery",#012 "jquery.accessKeyLabel",#012 "jquery.appear",#012 "jquery.arrowSteps",#012 "jquery.async",#012 "jquery.autoEllipsis",#012 "jquery.badge",#012 "jquery.byteLength",#012 "jquery.byteLimit",#012 "jquery.checkboxShiftClick",#012 "jquery.chosen",#012 "jquery.client",#012 "jquery.color",#012 "jquery.colorUtil",#012 "jquery.confirmable",#012 "jquery.cookie",#012 "jquery.expandableField",#012 "jquery.farbtastic",#012 "jquery.footHovzer",#012 "jquery.form",#012 "jquery.fullscreen",#012 "jquery.getAttrs",#012 "jquery.hidpi",#012 "jquery.highlightText",#012 "jquery.hoverIntent",#012 "jquery.localize",#012 "jquery.makeCollapsible",#012 "jquery.mockjax",#012 "jquery.mw-jump",#012 "jquery.mwExtension",#012 "jquery.placeholder",#012 "jquery.qunit",#012 "jquery.qunit.completenessTest",#012 "jquery.spinner",#012 "jquery.jStorage",#012 "jquery.suggestions",#012 "jquery.tabIndex",#012 "jquery.tablesorter",#012 "jquery.textSelection",#012 "jquery.throttle-debounce",#012 "jquery.validate",#012 "jquery.xmldom",#012 "jquery.tipsy",#012 "jquery.ui.core",#012 "jquery.ui.accordion",#012 "jquery.ui.autocomplete",#012 "jquery.ui.button",#012 "jquery.ui.datepicker",#012 "jquery.ui.dialog",#012 "jquery.ui.draggable",#012 "jquery.ui.droppable",#012 "jquery.ui.menu",#012 "jquery.ui.mouse",#012 "jquery.ui.position",#012 "jquery.ui.progressbar",#012 "jquery.ui.resizable",#012 "jquery.ui.selectable",#012 "jquery.ui.slider",#012 "jquery.ui.sortable",#012 "jquery.ui.spinner",#012 "jquery.ui.tabs",#012 "jquery.ui.tooltip",#012 "jquery.ui.widget",#012 "jquery.effects.core",#012 "jquery.effects.blind",#012 "jquery.effects.bounce",#012 "jquery.effects.clip",#012 "jquery.effects.drop",#012 "jquery.effects.explode",#012 "jquery.effects.fade",#012 "jquery.effects.fold",#012 "jquery.effects.highlight",#012 "jquery.effects.pulsate",#012 "jquery.effects.scale",#012 "jquery.effects.shake",#012 "jquery.effects.slide",#012 "jquery.effects.transfer",#012 "json",#012 "moment",#012 "mediawiki",#012 "mediawiki.apihelp",#012 "mediawiki.template",#012 "mediawiki.apipretty",#012 "mediawiki.api",#012 "mediawiki.api.category",#012 "mediawiki.api.edit",#012 "mediawiki.api.login",#012 "mediawiki.api.parse",#012 "mediawiki.api.watch",#012 "mediawiki.content.json",#012 "mediawiki.confirmCloseWindow",#012 "mediawiki.debug",#012 "mediawiki.debug.init",#012 "mediawiki.feedback",#012 "mediawiki.hidpi",#012 "mediawiki.hlist",#012 "mediawiki.htmlform",#012 "mediawiki.icon",#012 "mediawiki.inspect",#012 "mediawiki.notification",#012 "mediawiki.notify",#012 "mediawiki.pager.tablePager",#012 "mediawiki.searchSuggest",#012 "mediawiki.Title",#012 "mediawiki.toc",#012 "mediawiki.Uri",#012 "mediawiki.user",#012 "mediawiki.userSuggest",#012 "mediawiki.util",#012 "mediawiki.cookie",#012 "mediawiki.toolbar",#012 "mediawiki.action.edit",#012 "mediawiki.action.edit.styles",#012 "mediawiki.action.edit.collapsibleFooter",#012 "mediawiki.action.edit.preview",#012 "mediawiki.action.history",#012 "mediawiki.action.history.diff",#012 "mediawiki.action.view.dblClickEdit",#012 "mediawiki.action.view.metadata",#012 "mediawiki.action.view.postEdit",#012 "mediawiki.action.view.redirect",#012 "mediawiki.action.view.redirectPage",#012 "mediawiki.action.view.rightClickEdit",#012 "mediawiki.action.edit.editWarning",#012 "mediawiki.language",#012 "mediawiki.cldr",#012 "mediawiki.libs.pluralruleparser",#012 "mediawiki.language.init",#012 "mediawiki.jqueryMsg",#012 "mediawiki.language.months",#012 "mediawiki.language.names",#012 "mediawiki.libs.jpegmeta",#012 "mediawiki.page.gallery",#012 "mediawiki.page.ready",#012 "mediawiki.page.startup",#012 "mediawiki.page.patrol.ajax",#012 "mediawiki.page.watch.ajax",#012 "mediawiki.page.image.pagination",#012 "mediawik

bingle-admin wrote:

Prioritization and scheduling of this bug is tracked on Trello card https://trello.com/c/9dGlL33Y

This looks like it is coming from Zero. I didn't realise they were using this class. I had thought the deprecation warning had been running for long enough to remove it. Will chat to Adam.

Jeff Hobson and I will work to get this fixed asap.

Change 173069 had a related patch set uploaded by Jdlrobson:
Use templates in core to avoid fatals

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

Change 173069 merged by jenkins-bot:
Use templates in core to avoid fatals

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

This is breaking the OCG progress bar in beta as well.

I'm assuming/hoping that Top Men are hard are work on this, and the bug won't survive into production?

To be clear:
This is breaking A LOT OF THINGS, pretty much all browser tests are failing all day due to bits not responding.

Jon/Jeff: Can you just revert the change ASAP? The "build is broken" as it were, we can't leave it broken all day.

Greg does the patch solve the issue? Can we just add to the build?

(it's going to be easier to update Zero than Mantle and all its dependencies)

Beta labs is working again. Thanks Jon and Jeff.

No need to add anything to anything because merged changes are deployed to beta labs automatically.

Please correct me if I am wrong:

The change https://gerrit.wikimedia.org/r/#/c/168233/ to Mantle removed a bunch of javascript which turned out to be used by several other extensions (ZeroBanner and OCG at least).

I guess running the qunit tests of ZeroBanner and OCG with that Mantle patch applied would have caught the issue. If someone has some spare time to verify that it would be rather nice.

From there, I am willing to have a generic qunit job that will tests together all extensions having qunit jobs. This way if Mantle change something, the other extensions would complain. Does that sounds like a good idea?

  • Bug 73375 has been marked as a duplicate of this bug. ***

I'm not sure why OCG broke or what that is but this would have been noticed if things ran tests for extensions that depended on them. In this case MobileFrontend should run qunit and phpunit tests for zero and Mantle should run qunit and phpunit on Flow and MobileFrontend