Page MenuHomePhabricator

Using Special:EnableFlow on a French Wikiproject page has broken the page completely
Closed, ResolvedPublic

Description

An admin on French WP moved the following page to an archive, and did not leave a redirect:

https://fr.wikipedia.org/wiki/Projet:Astronomie/Porte_des_%C3%A9toiles

I used Special:EnableFlow to put a Flow board there. The board wasn't created there, and instead the page says "Unknown topic: The requested topic does not exist."

I'm filing this as Unbreak Now, and it needs to be fixed on the wiki this afternoon. French community members are excited about Flow, and took it upon themselves to arrange for a deployment there. Instead of getting the Flow board they wanted, we have now actually broken that WikiProject page, and rendered it unuseable. This is the opposite of the experience that we want people to have when they create a new Flow board.


Looks like it was caused by:

12015-06-17 22:29:40 mw1218 frwiki exception INFO: [b4f882c0] /wiki/Sp%C3%A9cial:EnableFlow InvalidArgumentException from line 78 of /srv/mediawiki/php-1.26wmf9/extensions/Wikidata/extensions/Wikibase/client/includes/store/UsageUpdater.php: $touched must be a timestamp string!
2#0 /srv/mediawiki/php-1.26wmf9/extensions/Wikidata/extensions/Wikibase/client/includes/Hooks/DataUpdateHookHandlers.php(142): Wikibase\Client\Store\UsageUpdater->addUsagesForPage()
3#1 /srv/mediawiki/php-1.26wmf9/extensions/Wikidata/extensions/Wikibase/client/includes/Hooks/DataUpdateHookHandlers.php(62): Wikibase\Client\Hooks\DataUpdateHookHandlers->doLinksUpdateComplete()
4#2 /srv/mediawiki/php-1.26wmf9/includes/Hooks.php(204): Wikibase\Client\Hooks\DataUpdateHookHandlers::onLinksUpdateComplete()
5#3 /srv/mediawiki/php-1.26wmf9/includes/deferred/LinksUpdate.php(146): Hooks::run()
6#4 /srv/mediawiki/php-1.26wmf9/includes/deferred/DeferredUpdates.php(119): LinksUpdate->doUpdate()
7#5 /srv/mediawiki/php-1.26wmf9/includes/page/WikiPage.php(1953): DeferredUpdates::doUpdates()
8#6 /srv/mediawiki/php-1.26wmf9/extensions/Flow/includes/TalkpageManager.php(159): WikiPage->doEditContent()
9#7 /srv/mediawiki/php-1.26wmf9/extensions/Flow/includes/SubmissionHandler.php(134): Flow\TalkpageManager->ensureFlowRevision()
10#8 /srv/mediawiki/php-1.26wmf9/extensions/Flow/includes/WorkflowLoader.php(66): Flow\SubmissionHandler->commit()
11#9 /srv/mediawiki/php-1.26wmf9/extensions/Flow/includes/Specials/SpecialEnableFlow.php(149): Flow\WorkflowLoader->commit()
12#10 /srv/mediawiki/php-1.26wmf9/includes/htmlform/HTMLForm.php(576): Flow\Specials\SpecialEnableFlow->onSubmit()
13#11 /srv/mediawiki/php-1.26wmf9/includes/htmlform/HTMLForm.php(499): HTMLForm->trySubmit()
14#12 /srv/mediawiki/php-1.26wmf9/includes/htmlform/HTMLForm.php(514): HTMLForm->tryAuthorizedSubmit()
15#13 /srv/mediawiki/php-1.26wmf9/includes/specialpage/FormSpecialPage.php(150): HTMLForm->show()
16#14 /srv/mediawiki/php-1.26wmf9/includes/specialpage/SpecialPage.php(384): FormSpecialPage->execute()
17#15 /srv/mediawiki/php-1.26wmf9/includes/specialpage/SpecialPageFactory.php(582): SpecialPage->run()
18#16 /srv/mediawiki/php-1.26wmf9/includes/MediaWiki.php(285): SpecialPageFactory::executePath()
19#17 /srv/mediawiki/php-1.26wmf9/includes/MediaWiki.php(634): MediaWiki->performRequest()
20#18 /srv/mediawiki/php-1.26wmf9/includes/MediaWiki.php(431): MediaWiki->main()
21#19 /srv/mediawiki/php-1.26wmf9/index.php(41): MediaWiki->run()
22#20 /srv/mediawiki/w/index.php(3): include()
23#21 {main} {"private":false}

and

1
22015-06-17 22:29:41 mw1218 frwiki exception INFO: [0300cee6] /wiki/Sp%C3%A9cial:EnableFlow InvalidArgumentException from line 78 of /srv/mediawiki/php-1.26wmf9/extensions/Wikidata/extensions/Wikibase/client/includes/store/UsageUpdater.php: $touched must be a timestamp string!
3#0 /srv/mediawiki/php-1.26wmf9/extensions/Wikidata/extensions/Wikibase/client/includes/Hooks/DataUpdateHookHandlers.php(142): Wikibase\Client\Store\UsageUpdater->addUsagesForPage()
4#1 /srv/mediawiki/php-1.26wmf9/extensions/Wikidata/extensions/Wikibase/client/includes/Hooks/DataUpdateHookHandlers.php(62): Wikibase\Client\Hooks\DataUpdateHookHandlers->doLinksUpdateComplete()
5#2 /srv/mediawiki/php-1.26wmf9/includes/Hooks.php(204): Wikibase\Client\Hooks\DataUpdateHookHandlers::onLinksUpdateComplete()
6#3 /srv/mediawiki/php-1.26wmf9/includes/deferred/LinksUpdate.php(146): Hooks::run()
7#4 /srv/mediawiki/php-1.26wmf9/includes/deferred/DataUpdate.php(101): LinksUpdate->doUpdate()
8#5 /srv/mediawiki/php-1.26wmf9/extensions/Flow/includes/LinksTableUpdater.php(39): DataUpdate::runUpdates()
9#6 /srv/mediawiki/php-1.26wmf9/extensions/Flow/includes/Data/Listener/ReferenceRecorder.php(80): Flow\LinksTableUpdater->doUpdate()
10#7 /srv/mediawiki/php-1.26wmf9/extensions/Flow/includes/Data/ObjectManager.php(261): Flow\Data\Listener\ReferenceRecorder->onAfterInsert()
11#8 /srv/mediawiki/php-1.26wmf9/extensions/Flow/includes/Data/ObjectManager.php(170): Flow\Data\ObjectManager->insert()
12#9 /srv/mediawiki/php-1.26wmf9/extensions/Flow/includes/Data/ObjectManager.php(143): Flow\Data\ObjectManager->multiPut()
13#10 /srv/mediawiki/php-1.26wmf9/extensions/Flow/includes/Data/ManagerGroup.php(80): Flow\Data\ObjectManager->put()
14#11 /srv/mediawiki/php-1.26wmf9/extensions/Flow/includes/Block/Header.php(171): Flow\Data\ManagerGroup->put()
15#12 /srv/mediawiki/php-1.26wmf9/extensions/Flow/includes/SubmissionHandler.php(141): Flow\Block\HeaderBlock->commit()
16#13 /srv/mediawiki/php-1.26wmf9/extensions/Flow/includes/WorkflowLoader.php(66): Flow\SubmissionHandler->commit()
17#14 /srv/mediawiki/php-1.26wmf9/extensions/Flow/includes/Specials/SpecialEnableFlow.php(149): Flow\WorkflowLoader->commit()
18#15 /srv/mediawiki/php-1.26wmf9/includes/htmlform/HTMLForm.php(576): Flow\Specials\SpecialEnableFlow->onSubmit()
19#16 /srv/mediawiki/php-1.26wmf9/includes/htmlform/HTMLForm.php(499): HTMLForm->trySubmit()
20#17 /srv/mediawiki/php-1.26wmf9/includes/htmlform/HTMLForm.php(514): HTMLForm->tryAuthorizedSubmit()
21#18 /srv/mediawiki/php-1.26wmf9/includes/specialpage/FormSpecialPage.php(150): HTMLForm->show()
22#19 /srv/mediawiki/php-1.26wmf9/includes/specialpage/SpecialPage.php(384): FormSpecialPage->execute()
23#20 /srv/mediawiki/php-1.26wmf9/includes/specialpage/SpecialPageFactory.php(582): SpecialPage->run()
24#21 /srv/mediawiki/php-1.26wmf9/includes/MediaWiki.php(285): SpecialPageFactory::executePath()
25#22 /srv/mediawiki/php-1.26wmf9/includes/MediaWiki.php(634): MediaWiki->performRequest()
26#23 /srv/mediawiki/php-1.26wmf9/includes/MediaWiki.php(431): MediaWiki->main()
27#24 /srv/mediawiki/php-1.26wmf9/index.php(41): MediaWiki->run()
28#25 /srv/mediawiki/w/index.php(3): include()
29#26 {main} {"private":false}

Event Timeline

DannyH created this task.Jun 17 2015, 8:40 PM
DannyH raised the priority of this task from to Unbreak Now!.
DannyH updated the task description. (Show Details)
DannyH added a subscriber: DannyH.
Restricted Application added a subscriber: Aklapper. · View Herald TranscriptJun 17 2015, 8:40 PM
DannyH updated the task description. (Show Details)Jun 17 2015, 8:44 PM
DannyH set Security to None.
mysql:research@x1-analytics-slave [flowdb]> SELECT LOWER(HEX(workflow_id)), workflow_wiki, workflow_namespace, workflow_page_id, workflow_title_text, workflow_type FROM flow_workflow WHERE workflow_wiki = 'frwiki' AND workflow_type = 'discussion';
+-------------------------+---------------+--------------------+------------------+-------------------------+---------------+
| LOWER(HEX(workflow_id)) | workflow_wiki | workflow_namespace | workflow_page_id | workflow_title_text     | workflow_type |
+-------------------------+---------------+--------------------+------------------+-------------------------+---------------+
| 05210c10f02f9b30a58a24  | frwiki        |                  4 |          8284195 | Forum_des_nouveaux/Flow | discussion    |
| 05210c6f7e2fcaebf65d66  | frwiki        |                  5 |          8284216 | Flow                    | discussion    |
+-------------------------+---------------+--------------------+------------------+-------------------------+---------------+
2 rows in set (0.01 sec)
mysql:research@s6-analytics-slave [frwiki]> SELECT * FROM page WHERE page_title = 'Astronomie/Porte_des_étoiles';
+---------+----------------+-------------------------------+-------------------+--------------+------------------+-------------+----------------+----------------+--------------------+-------------+----------+-----------------------+--------------------+
| page_id | page_namespace | page_title                    | page_restrictions | page_counter | page_is_redirect | page_is_new | page_random    | page_touched   | page_links_updated | page_latest | page_len | page_no_title_convert | page_content_model |
+---------+----------------+-------------------------------+-------------------+--------------+------------------+-------------+----------------+----------------+--------------------+-------------+----------+-----------------------+--------------------+
| 9221793 |            102 | Astronomie/Porte_des_étoiles  |                   |            0 |                0 |           1 | 0.124012449845 | 20150617202940 | NULL               |   116084479 |        1 |                     0 | flow-board         |
+---------+----------------+-------------------------------+-------------------+--------------+------------------+-------------+----------------+----------------+--------------------+-------------+----------+-----------------------+--------------------+
1 row in set (3.59 sec)
mysql:research@s6-analytics-slave [frwiki]> SELECT * FROM revision WHERE rev_page = 9221793;
+-----------+----------+-------------+--------------------------+----------+---------------------------------+----------------+----------------+-------------+---------+---------------+---------------------------------+-------------------+--------------------+
| rev_id    | rev_page | rev_text_id | rev_comment              | rev_user | rev_user_text                   | rev_timestamp  | rev_minor_edit | rev_deleted | rev_len | rev_parent_id | rev_sha1                        | rev_content_model | rev_content_format |
+-----------+----------+-------------+--------------------------+----------+---------------------------------+----------------+----------------+-------------+---------+---------------+---------------------------------+-------------------+--------------------+
| 116084479 |  9221793 |   116020996 | /* Taken over by Flow */ |  2023166 | Gestionnaire de la page de Flow | 20150617202940 |              0 |           0 |       1 |             0 | 6rxqumddk175jfvuvnh0vlcajhcftci | flow-board        | application/json   |
+-----------+----------+-------------+--------------------------+----------+---------------------------------+----------------+----------------+-------------+---------+---------------+---------------------------------+-------------------+--------------------+
1 row in set (0.00 sec)
mysql:research@s6-analytics-slave [frwiki]> SELECT * FROM text WHERE old_id = 116020996;
+-----------+---------------+-----------+-------------------------+-------------+----------+---------------+---------------+----------------+---------------------+-------------------+
| old_id    | old_namespace | old_title | old_text                | old_comment | old_user | old_user_text | old_timestamp | old_minor_edit | old_flags           | inverse_timestamp |
+-----------+---------------+-----------+-------------------------+-------------+----------+---------------+---------------+----------------+---------------------+-------------------+
| 116020996 |               |           | DB://cluster24/16813589 |             |          |               |               |                | utf-8,gzip,external |                   |
+-----------+---------------+-----------+-------------------------+-------------+----------+---------------+---------------+----------------+---------------------+-------------------+
1 row in set (0.02 sec)
mysql:research@x1-analytics-slave [flowdb]> SELECT DISTINCT workflow_title_text FROM flow_workflow WHERE workflow_wiki = 'frwiki' ORDER by workflow_id DESC LIMIT 10;+-------------------------+
| workflow_title_text     |
+-------------------------+
| Flow                    |
| Forum_des_nouveaux/Flow |
+-------------------------+
2 rows in set (0.00 sec)

Change 219050 had a related patch set uploaded (by Mattflaschen):
Add ParserOutput timestamp to fix Wikibase exception

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

Change 219050 merged by jenkins-bot:
Add ParserOutput timestamp to fix Wikibase exception

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

Change 219067 had a related patch set uploaded (by Catrope):
Add ParserOutput timestamp to fix Wikibase exception

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

https://gerrit.wikimedia.org/r/#/c/217007/3/client/includes/Hooks/DataUpdateHookHandlers.php since coincidentally fixed it on master. There is a cherry-pick to 1.26wmf9 (https://gerrit.wikimedia.org/r/#/c/217031/), but it is not merged.

At any rate, we run the risk of other code similarly assuming getTimestamp() is non-null, so it is a good idea to have this set.

Change 219067 merged by jenkins-bot:
Add ParserOutput timestamp to fix Wikibase exception

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

To clarify, DataUpdateHookHandlers.php is a Wikibase file.

DannyH closed this task as Resolved.Jun 17 2015, 11:53 PM

Resolved speedily, thank you!

Sorry for the breakage, guys :/

Danny_B removed subscribers: Wikidata, gerritbot.
Restricted Application added a subscriber: TerraCodes. · View Herald TranscriptJul 3 2016, 11:15 PM