Page MenuHomePhabricator

CS upgrade to 7.0 throws "invalid magic word' errors
Closed, ResolvedPublicBUG REPORT

Description

List of steps to reproduce (step by step, including full links if applicable):

  • I was on CS 6.0 and followed the upgrading steps to 6.3 without problems
  • Moved the CS callin LocalSettings to before the SMW call (and the Namespace definitions to before CS)
  • Then I tried upgrading to 7.0 which resulted in errors
  • Switching back to 6.3 is working fine, fortunately

What happens?:
The error message seems to come from magic words of other extensions. First (magic word "mermaid") I tried to make sure I was on the latest mermaid version, but it seems that the error shows arbitrary magic words:

Importing from smw.groups.json ...
   ... SMW/Schema:Group:Schema properties ...MWException from line 129 of includes/MagicWord.php: Error: invalid magic word 'mermaid'

next run

Importing from smw.groups.json ...
   ... SMW/Schema:Group:Schema properties ...MWException from line 129 of includes/MagicWord.php: Error: invalid magic word 'calendarstartdate'

next run:

Importing from smw.groups.json ...
   ... SMW/Schema:Group:Schema properties ...MWException from line 129 of includes/MagicWord.php: Error: invalid magic word 'scite'

Software version (if not a Wikimedia wiki), browser information, screenshots, other information, etc:
MW 1.35.4, PHP 7.3, SMW 3.2.3

Event Timeline

Here is a complete stack trace from the first one:

MWException from line 129 of includes/MagicWord.php: Error: invalid magic word 'mermaid'
#0 includes/MagicWordFactory.php(230): MagicWord->load('mermaid')
#1 includes/parser/Parser.php(4872): MagicWordFactory->get('mermaid')
#2 extensions/Mermaid/src/HookRegistry.php(80): Parser->setFunctionHook('mermaid', Object(Closure), 0)
#3 includes/HookContainer/HookContainer.php(329): Mermaid\HookRegistry->Mermaid\{closure}(Object(Parser))
#4 includes/HookContainer/HookContainer.php(132): MediaWiki\HookContainer\HookContainer->callLegacyHook('ParserFirstCall...', Array, Array, Array)
#5 includes/HookContainer/HookRunner.php(2960): MediaWiki\HookContainer\HookContainer->run('ParserFirstCall...', Array)
#6 includes/parser/Parser.php(532): MediaWiki\HookContainer\HookRunner->onParserFirstCallInit(Object(Parser))
#7 includes/parser/Parser.php(477): Parser->firstCallInit()
#8 includes/parser/ParserFactory.php(142): Parser->__construct(Object(MediaWiki\Config\ServiceOptions), Object(MagicWordFactory), Object(Language), Object(ParserFactory), 'bitcoin\\:|ftp\\:...', Object(MediaWiki\SpecialPage\SpecialPageFactory), Object(MediaWiki\Linker\LinkRendererFactory), Object(NamespaceInfo), Object(MediaWiki\Logger\LegacyLogger), Object(MediaWiki\BadFileLookup), Object(MediaWiki\Languages\LanguageConverterFactory), Object(MediaWiki\HookContainer\HookContainer))
#9 includes/ServiceWiring.php(817): ParserFactory->create()
#10 vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}(Object(MediaWiki\MediaWikiServices))
#11 vendor/wikimedia/services/src/ServiceContainer.php(416): Wikimedia\Services\ServiceContainer->createService('Parser')
#12 includes/MediaWikiServices.php(1000): Wikimedia\Services\ServiceContainer->getService('Parser')
#13 includes/cache/MessageCache.php(1266): MediaWiki\MediaWikiServices->getParser()
#14 includes/cache/MessageCache.php(1293): MessageCache->getParser()
#15 includes/language/Message.php(1258): MessageCache->parse('This schema typ...', Object(Title), true, true, Object(LanguageEn))
#16 includes/language/Message.php(889): Message->parseText('This schema typ...')
#17 includes/language/Message.php(942): Message->toString('parse')
#18 extensions/SemanticMediaWiki/src/Setup.php(282): Message->parse()
#19 [internal function]: SMW\Setup->SMW\{closure}(Array, Object(LanguageEn))
#20 extensions/SemanticMediaWiki/src/Localizer/Message.php(233): call_user_func_array(Object(Closure), Array)
#21 extensions/SemanticMediaWiki/src/MediaWiki/Content/SchemaContentFormatter.php(374): SMW\Localizer\Message::get(Array, 8, 100)
#22 extensions/SemanticMediaWiki/src/MediaWiki/Content/SchemaContentFormatter.php(244): SMW\MediaWiki\Content\SchemaContentFormatter->msg(Array, 8)
#23 extensions/SemanticMediaWiki/src/MediaWiki/Content/SchemaContentFormatter.php(224): SMW\MediaWiki\Content\SchemaContentFormatter->schema_summary(Object(SMW\Schema\SchemaDefinition), Array)
#24 extensions/SemanticMediaWiki/src/MediaWiki/Content/SchemaContentFormatter.php(156): SMW\MediaWiki\Content\SchemaContentFormatter->body(Object(SMW\Schema\SchemaDefinition), Array, '{\n    "type": "...')
#25 extensions/SemanticMediaWiki/src/MediaWiki/Content/SchemaContent.php(234): SMW\MediaWiki\Content\SchemaContentFormatter->getText('{\n    "type": "...', Object(SMW\Schema\SchemaDefinition), Array)
#26 includes/content/AbstractContent.php(590): SMW\MediaWiki\Content\SchemaContent->fillParserOutput(Object(Title), 3676, Object(ParserOptions), true, Object(ParserOutput))
#27 includes/Revision/RenderedRevision.php(263): AbstractContent->getParserOutput(Object(Title), 3676, Object(ParserOptions), true)
#28 includes/Revision/RenderedRevision.php(235): MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(Object(SMW\MediaWiki\Content\SchemaContent), true)
#29 includes/Revision/RevisionRenderer.php(215): MediaWiki\Revision\RenderedRevision->getSlotParserOutput('main')
#30 includes/Revision/RevisionRenderer.php(152): MediaWiki\Revision\RevisionRenderer->combineSlotOutput(Object(MediaWiki\Revision\RenderedRevision), Array)
#31 [internal function]: MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(Object(MediaWiki\Revision\RenderedRevision), Array)
#32 includes/Revision/RenderedRevision.php(197): call_user_func(Object(Closure), Object(MediaWiki\Revision\RenderedRevision), Array)
#33 includes/Storage/DerivedPageDataUpdater.php(1315): MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#34 includes/Storage/PageUpdater.php(752): MediaWiki\Storage\DerivedPageDataUpdater->getCanonicalParserOutput()
#35 includes/page/WikiPage.php(2015): MediaWiki\Storage\PageUpdater->saveRevision(Object(CommentStoreComment), 18)
#36 extensions/SemanticMediaWiki/src/Importer/ContentCreators/TextContentCreator.php(159): WikiPage->doEditContent(Object(SMW\MediaWiki\Content\SchemaContent), Object(CommentStoreComment), 16, false, Object(User))
#37 extensions/SemanticMediaWiki/src/Importer/ContentCreators/TextContentCreator.php(141): SMW\Importer\ContentCreators\TextContentCreator->doCreateContent(Object(WikiPage), Object(Title), Object(SMW\Importer\ImportContents), 'EXISTS,REPLACE')
#38 [internal function]: SMW\Importer\ContentCreators\TextContentCreator->SMW\Importer\ContentCreators\{closure}(1, Object(Wikimedia\Rdbms\DatabaseMysqli))
#39 includes/libs/rdbms/database/Database.php(4104): call_user_func(Object(Closure), 1, Object(Wikimedia\Rdbms\DatabaseMysqli))
#40 includes/libs/rdbms/database/Database.php(3906): Wikimedia\Rdbms\Database->runOnTransactionIdleCallbacks(1)
#41 includes/libs/rdbms/database/DBConnRef.php(68): Wikimedia\Rdbms\Database->onTransactionCommitOrIdle(Object(Closure))
#42 includes/libs/rdbms/database/DBConnRef.php(600): Wikimedia\Rdbms\DBConnRef->__call('onTransactionCo...', Array)
#43 extensions/SemanticMediaWiki/src/MediaWiki/Connection/Database.php(777): Wikimedia\Rdbms\DBConnRef->onTransactionCommitOrIdle(Object(Closure))
#44 extensions/SemanticMediaWiki/src/Importer/ContentCreators/TextContentCreator.php(142): SMW\MediaWiki\Connection\Database->onTransactionIdle(Object(Closure))
#45 extensions/SemanticMediaWiki/src/Importer/ContentCreators/DispatchingContentCreator.php(75): SMW\Importer\ContentCreators\TextContentCreator->create(Object(SMW\Importer\ImportContents))
#46 extensions/SemanticMediaWiki/src/Importer/Importer.php(127): SMW\Importer\ContentCreators\DispatchingContentCreator->create(Object(SMW\Importer\ImportContents))
#47 extensions/SemanticMediaWiki/src/Importer/Importer.php(105): SMW\Importer\Importer->doImport(Object(SMW\Importer\ImportContents))
#48 extensions/SemanticMediaWiki/src/MediaWiki/Hooks.php(1481): SMW\Importer\Importer->runImport()
#49 includes/HookContainer/HookContainer.php(329): SMW\MediaWiki\Hooks->onAfterCreateTablesComplete(Object(SMW\SQLStore\TableBuilder\MySQLTableBuilder), Object(Onoi\MessageReporter\ObservableMessageReporter), Object(SMW\Options))
#50 includes/HookContainer/HookContainer.php(132): MediaWiki\HookContainer\HookContainer->callLegacyHook('SMW::SQLStore::...', Array, Array, Array)
#51 includes/Hooks.php(137): MediaWiki\HookContainer\HookContainer->run('SMW::SQLStore::...', Array, Array)
#52 extensions/SemanticMediaWiki/src/MediaWiki/HookDispatcher.php(274): Hooks::run('SMW::SQLStore::...', Array)
#53 extensions/SemanticMediaWiki/src/SQLStore/Installer.php(279): SMW\MediaWiki\HookDispatcher->onInstallerAfterCreateTablesComplete(Object(SMW\SQLStore\TableBuilder\MySQLTableBuilder), Object(Onoi\MessageReporter\ObservableMessageReporter), Object(SMW\Options))
#54 extensions/SemanticMediaWiki/src/SQLStore/SQLStore.php(451): SMW\SQLStore\Installer->install(Object(SMW\Options))
#55 extensions/SemanticMediaWiki/src/Store.php(489): SMW\SQLStore\SQLStore->setup(Object(SMW\Options))
#56 includes/installer/DatabaseUpdater.php(554): SMW\Store::setupStore(true, Object(SMW\Options))
#57 includes/installer/DatabaseUpdater.php(522): DatabaseUpdater->runUpdates(Array, true)
#58 maintenance/update.php(181): DatabaseUpdater->doUpdates(Array)
#59 maintenance/doMaintenance.php(107): UpdateMediaWiki->execute()
#60 maintenance/update.php(253): require_once('/home/kdz/vrvin...')
#61 {main}

I'm not convinced that this is a CommentStreams bug, as CommentStreams doesn't show up in the stack trace at all. I tried to reproduce locally. I installed SMW 3.2.3 with MediaWiki 1.35.4 and CommentStreams 6.3. I added a comment and a reply. I then upgraded to CommentStreams 7.0. All works fine. Is the problem repeatable for you?

image.png (973×1 px, 142 KB)

yes. I just did the following

  1. Checked version, CS is on 6.3
  2. ran update.php without errors
  3. did a git checkout REL1_37
  4. refreshed the Special:Version page, not surprisingly resulting in [YW7X5CS87wnATo7-552S-AAAABA] /Spezial:Version Wikimedia\Rdbms\DBQueryError from line 1699 of /home/kdz/vrvintern/includes/libs/rdbms/database/Database.php: A database query error has occurred. Did you forget to run your application's database schema updater after upgrading?
  5. ran update.php with the error (this time the "calendarstartdate" one
  6. did a git checkout REL1_35
  7. ran update.php sucessfully, Wiki is working again

maybe you want to add SRF to your setup?

Interesting. SRF is not required for CommentStreams and shouldn't affect it at all. And yet . . . when both are loaded, I get the same error you do, although each works by itself. I'll dig into it a bit more.

It is not related entirely to SRF, because now I tried deactivating it, resulting in

Importing from smw.groups.json ...
   ... SMW/Schema:Group:Schema properties ...MWException from line 129 of includes/MagicWord.php: Error: invalid magic word 'batchupload'

So now the complaint ist about simplebatch upload (as it was previously with mermaid or semantic cite.

Somehow CS does not like other extensions...

Change 732102 had a related patch set uploaded (by Cicalese; author: Cicalese):

[mediawiki/extensions/CommentStreams@master] Fix SMW initialization error

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

Change 732070 had a related patch set uploaded (by Cicalese; author: Cicalese):

[mediawiki/extensions/CommentStreams@REL1_37] Fix SMW initialization error

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

Change 732070 merged by jenkins-bot:

[mediawiki/extensions/CommentStreams@REL1_37] Fix SMW initialization error

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

Change 732102 merged by jenkins-bot:

[mediawiki/extensions/CommentStreams@master] Fix SMW initialization error

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

cicalese claimed this task.
cicalese moved this task from Backlog to Closed on the MediaWiki-extensions-CommentStreams board.

Great, this is working perfectly, thank you for the fast fix!