Page MenuHomePhabricator

Flow: Watchlist "show all" results in "internal error"
Closed, ResolvedPublic

Description

At the watchlist page, clicking "all" (http://ee-flow.wmflabs.org/w/index.php?title=Special:Watchlist&days=0) results in a long error message. Both Klipe and I get the same thing. See http://ee-flow.wmflabs.org/w/index.php?title=Talk:Flow_bugs&workflow=050cd71844f7f00fc8b1fa163e68c4ac for the error message


Version: unspecified
Severity: normal

Details

Reference
bz59106

Event Timeline

bzimport raised the priority of this task from to High.Nov 22 2014, 2:35 AM
bzimport set Reference to bz59106.
bzimport added a subscriber: Unknown Object (MLST).

bingle-admin wrote:

The WMF core features team tracks this bug on Mingle card https://mingle.corp.wikimedia.org/projects/flow/cards/662, but people from the community are welcome to contribute here and in Gerrit.

Confirmed as still a problem on ee-flow, but not a problem on mediawikiwiki.

I will collaborate with spage to triage this, later.

This doesn't happen for other users. Maybe it's some old article in this user's watchlist with data in some incompatible form, it might even be the "Moats" article that can't be viewed (bug 57897).

debug.log contains

[exception] [69fad112] /w/index.php?title=Special:Watchlist&days=0 Exception from line 160 of /srv/mediawiki/extensions/Flow/includes/Data/ObjectManager.php: Request for '' is not in classmap: Flow\Model\Definition, Definition, Flow\Model\Workflow, Workflow, Flow\Model\PostRevision, PostRevision, Flow\Model\TopicListEntry, TopicListEntry, Flow\Model\Header, Header, BoardHistoryEntry
#0 /srv/mediawiki/extensions/Flow/includes/Data/ObjectManager.php(174): Flow\Data\ManagerGroup->getStorage('')
#1 /srv/mediawiki/extensions/Flow/includes/Data/ObjectManager.php(184): Flow\Data\ManagerGroup->call('getMulti', Array)
#2 /srv/mediawiki/extensions/Flow/includes/Formatter.php(379): Flow\Data\ManagerGroup->getMulti('', Array)
#3 /srv/mediawiki/extensions/Flow/includes/Formatter.php(289): Flow\AbstractFormatter->loadRevisions(Array)
#4 /srv/mediawiki/extensions/Flow/includes/RecentChanges/Formatter.php(40): Flow\AbstractFormatter->loadRevision(Object(Flow\Model\UUID), NULL)
#5 /srv/mediawiki/extensions/Flow/Hooks.php(100): Flow\RecentChanges\Formatter->format(Object(OldChangesList), Object(RecentChange))
#6 [internal function]: FlowHooks::onOldChangesListRecentChangesLine(Object(OldChangesList), '(<a href="/w/in...', Object(RecentChange), Array)
#7 /srv/mediawiki/includes/Hooks.php(199): call_user_func_array('FlowHooks::onOl...', Array)
#8 /srv/mediawiki/includes/GlobalFunctions.php(4032): Hooks::run('OldChangesListR...', Array)
#9 /srv/mediawiki/includes/changes/OldChangesList.php(122): wfRunHooks('OldChangesListR...', Array)
#10 /srv/mediawiki/includes/specials/SpecialWatchlist.php(430): OldChangesList->recentChangesLine(Object(RecentChange), '20131108011956', 2039)
#11 /srv/mediawiki/includes/specialpage/SpecialPage.php(674): SpecialWatchlist->execute(NULL)
#12 /srv/mediawiki/includes/SpecialPageFactory.php(488): SpecialPage->run(NULL)
#13 /srv/mediawiki/includes/Wiki.php(298): SpecialPageFactory::executePath(Object(Title), Object(RequestContext))
#14 /srv/mediawiki/includes/Wiki.php(596): MediaWiki->performRequest()
#15 /srv/mediawiki/includes/Wiki.php(460): MediaWiki->main()
#16 /srv/mediawiki/index.php(49): MediaWiki->run()
#17 {main}

Looking closer, its this line:

#4 /srv/mediawiki/extensions/Flow/includes/RecentChanges/Formatter.php(40):
Flow\AbstractFormatter->loadRevision(Object(Flow\Model\UUID), NULL)

That second parameter comes from $changeData['revision_type'] which is somehow null. Two part fix should fail gracefully when the data isnt available, and dig through the data to figure out how that got inserted in the first place.

bsitu wrote:

All of the rc_params.flow-workflow-change has data in this format:

Array
(

[action] => reply
[block] => topic
[revision_type] => PostRevision
[revision] => 0508d7d5601b34dffb6efa163e68c4ac
[workflow] => 0508d7d5600f34dffb6efa163e68c4ac
[definition] => 0503ac336376bba2f8a9fa163e68c4ac
[post] => 0508d7d5601b34dffb6efa163e68c4ac
[topic] => Sooo

)

except this one:

Array
(

[workflow] => 0508d44cae8f34dffb6efa163e68c4ac
[definition] => 0503ac33637abba2f8a9fa163e68c4ac
[revision] => 0508d44cae9f34dffb6efa163e68c4ac
[content] => <p>Use this for substantive comment about Flow.  Use <a href="/wiki/Talk:Sandbox" title="Talk:Sandbox">Talk:Sandbox</a> for testing.

</p><p>See earlier <a href="...
)

I guess this one record is missed by the maintenance script?

bsitu wrote:

I believe this is a data inconsistency issue, we have about 180 flow records in recentchanges table without 'action', 'block', 'revision_type' keys. I suspect that the maintenance script missed some flow type during the conversion and only unset type. All these data were generated before or around the time the patch was merged.

Deleting those invalid data should solve the issue: delete from recentchanges where rc_type = '142' and rc_source = 'flow' and rc_params not like '%revision_type%'; Adding graceful failing ensures extra security, :)

Change 110294 had a related patch set uploaded by Bsitu:
Watchlist "show all" results in an "Error" page

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

Change 110294 merged by jenkins-bot:
Watchlist "show all" results in an "Error" page

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