hallowelt / migrate-confluence

Tool to migrate content from Confluence export files into a MediaWiki compatible import source
GNU General Public License v3.0
35 stars 8 forks source link

importDump.php - Incorrect title error while importing #112

Open SpaceCadet404 opened 3 months ago

SpaceCadet404 commented 3 months ago

Hello, I've gotten the error below when attempting to import the output.xml using importDump.php, as written in the README here:

Use php maintenance/importDump.php /tmp/result/output.xml to import the actual pages

output.xml is able to be imported using the Import Pages function in MediaWiki UI - example.com/index.php/Special:Import but fails when attempting to use importDump.php from cli.

# php maintenance/importDump.php /home/mediawiki/confluence/workspace/result/output.xml

[9f3da85e44ad68337bafe50c] [no req]   TypeError: AtMentions\MentionStore::forPage(): Argument #1 ($title) must be of type Title, null given, called in /var/lib/mediawiki/extensions/AtMentions/src/Hook/ProcessMentions.php on line 90
Backtrace:
from /var/lib/mediawiki/extensions/AtMentions/src/MentionStore.php(142)
#0 /var/lib/mediawiki/extensions/AtMentions/src/Hook/ProcessMentions.php(90): AtMentions\MentionStore->forPage()
#1 /usr/share/mediawiki/includes/HookContainer/HookContainer.php(160): AtMentions\Hook\ProcessMentions->onHtmlPageLinkRendererEnd()
#2 /usr/share/mediawiki/includes/HookContainer/HookRunner.php(2033): MediaWiki\HookContainer\HookContainer->run()
#3 /usr/share/mediawiki/includes/linker/LinkRenderer.php(314): MediaWiki\HookContainer\HookRunner->onHtmlPageLinkRendererEnd()
#4 /usr/share/mediawiki/includes/linker/LinkRenderer.php(300): MediaWiki\Linker\LinkRenderer->buildAElement()
#5 /usr/share/mediawiki/includes/parser/LinkHolderArray.php(274): MediaWiki\Linker\LinkRenderer->makeBrokenLink()
#6 /usr/share/mediawiki/includes/parser/LinkHolderArray.php(158): LinkHolderArray->replaceInternal()
#7 /usr/share/mediawiki/includes/parser/Parser.php(5079): LinkHolderArray->replace()
#8 /usr/share/mediawiki/includes/parser/Parser.php(1712): Parser->replaceLinkHoldersPrivate()
#9 /usr/share/mediawiki/includes/parser/Parser.php(726): Parser->internalParseHalfParsed()
#10 /usr/share/mediawiki/includes/content/WikitextContentHandler.php(301): Parser->parse()
#11 /usr/share/mediawiki/includes/content/ContentHandler.php(1720): WikitextContentHandler->fillParserOutput()
#12 /usr/share/mediawiki/includes/content/Renderer/ContentRenderer.php(47): ContentHandler->getParserOutput()
#13 /usr/share/mediawiki/includes/Revision/RenderedRevision.php(265): MediaWiki\Content\Renderer\ContentRenderer->getParserOutput()
#14 /usr/share/mediawiki/includes/Revision/RenderedRevision.php(237): MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached()
#15 /usr/share/mediawiki/includes/Revision/RevisionRenderer.php(221): MediaWiki\Revision\RenderedRevision->getSlotParserOutput()
#16 /usr/share/mediawiki/includes/Revision/RevisionRenderer.php(158): MediaWiki\Revision\RevisionRenderer->combineSlotOutput()
#17 [internal function]: MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}()
#18 /usr/share/mediawiki/includes/Revision/RenderedRevision.php(199): call_user_func()
#19 /usr/share/mediawiki/includes/Storage/DerivedPageDataUpdater.php(1438): MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#20 /usr/share/mediawiki/includes/Storage/DerivedPageDataUpdater.php(1817): MediaWiki\Storage\DerivedPageDataUpdater->getCanonicalParserOutput()
#21 /usr/share/mediawiki/includes/Storage/DerivedPageDataUpdater.php(1715): MediaWiki\Storage\DerivedPageDataUpdater->doParserCacheUpdate()
#22 /usr/share/mediawiki/includes/Storage/DerivedPageDataUpdater.php(1568): MediaWiki\Storage\DerivedPageDataUpdater->triggerParserCacheUpdate()
#23 /usr/share/mediawiki/includes/import/ImportableOldRevisionImporter.php(241): MediaWiki\Storage\DerivedPageDataUpdater->doUpdates()
#24 /usr/share/mediawiki/includes/import/WikiRevision.php(682): ImportableOldRevisionImporter->import()
#25 /usr/share/mediawiki/includes/import/WikiImporter.php(520): WikiRevision->importOldRevision()
#26 /usr/share/mediawiki/maintenance/importDump.php(210): WikiImporter->importRevision()
#27 /usr/share/mediawiki/includes/import/WikiImporter.php(649): BackupReader->handleRevision()
#28 /usr/share/mediawiki/includes/import/WikiImporter.php(1151): WikiImporter->revisionCallback()
#29 /usr/share/mediawiki/includes/import/WikiImporter.php(1017): WikiImporter->processRevision()
#30 /usr/share/mediawiki/includes/import/WikiImporter.php(949): WikiImporter->handleRevision()
#31 /usr/share/mediawiki/includes/import/WikiImporter.php(767): WikiImporter->handlePage()
#32 /usr/share/mediawiki/maintenance/importDump.php(364): WikiImporter->doImport()
#33 /usr/share/mediawiki/maintenance/importDump.php(298): BackupReader->importFromHandle()
#34 /usr/share/mediawiki/maintenance/importDump.php(139): BackupReader->importFromFile()
#35 /usr/share/mediawiki/maintenance/includes/MaintenanceRunner.php(309): BackupReader->execute()
#36 /usr/share/mediawiki/maintenance/doMaintenance.php(85): MediaWiki\Maintenance\MaintenanceRunner->run()
#37 /usr/share/mediawiki/maintenance/importDump.php(369): require_once(string)
#38 {main}
osnard commented 2 months ago

Hi, thanks for reporting!

Can you please scan the output.xml file for suspicious values in the <title> element? e.g. empty values like <title></title> or values containing invalid characters (see https://www.mediawiki.org/wiki/Manual:$wgLegalTitleChars)?

Also, it could be broken user page links. Maybe you can search for [[User:*]] in the output.xml and see if there are any broken links. In general this may also be a bug in the Extension:AtMentions.

osnard commented 2 months ago

Looks like this has been fixed in Extension:AtMentions already: https://gerrit.wikimedia.org/r/c/mediawiki/extensions/AtMentions/+/1031074/1/src/Hook/ProcessMentions.php

Probably not yet released though.