Page MenuHomePhabricator

InvariantException: Invariant failed: Comments are always preceded by headings
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   Wikimedia\Assert\InvariantException: Invariant failed: Comments are always preceded by headings
exception.trace
from /srv/mediawiki/php-1.37.0-wmf.18/vendor/wikimedia/assert/src/Assert.php(224)
#0 /srv/mediawiki/php-1.37.0-wmf.18/extensions/DiscussionTools/includes/Notifications/EventDispatcher.php(119): Wikimedia\Assert\Assert::invariant(boolean, string)
#1 /srv/mediawiki/php-1.37.0-wmf.18/extensions/DiscussionTools/includes/Notifications/EventDispatcher.php(144): MediaWiki\Extension\DiscussionTools\Notifications\EventDispatcher::groupCommentsByThreadAndName(array)
#2 /srv/mediawiki/php-1.37.0-wmf.18/extensions/DiscussionTools/includes/Notifications/EventDispatcher.php(102): MediaWiki\Extension\DiscussionTools\Notifications\EventDispatcher::generateEventsFromParsers(array, MediaWiki\Extension\DiscussionTools\CommentParser, MediaWiki\Extension\DiscussionTools\CommentParser, MediaWiki\Revision\RevisionStoreRecord, Title, User)
#3 /srv/mediawiki/php-1.37.0-wmf.18/extensions/DiscussionTools/includes/Hooks/EchoHooks.php(91): MediaWiki\Extension\DiscussionTools\Notifications\EventDispatcher::generateEventsForRevision(array, MediaWiki\Revision\RevisionStoreRecord)
#4 /srv/mediawiki/php-1.37.0-wmf.18/includes/HookContainer/HookContainer.php(338): MediaWiki\Extension\DiscussionTools\Hooks\EchoHooks::onEchoGetEventsForRevision(array, MediaWiki\Revision\RevisionStoreRecord, boolean)
#5 /srv/mediawiki/php-1.37.0-wmf.18/includes/HookContainer/HookContainer.php(137): MediaWiki\HookContainer\HookContainer->callLegacyHook(string, array, array, array)
#6 /srv/mediawiki/php-1.37.0-wmf.18/includes/Hooks.php(137): MediaWiki\HookContainer\HookContainer->run(string, array, array)
#7 /srv/mediawiki/php-1.37.0-wmf.18/extensions/Echo/includes/DiscussionParser.php(165): Hooks::run(string, array)
#8 /srv/mediawiki/php-1.37.0-wmf.18/extensions/Echo/includes/EchoHooks.php(494): EchoDiscussionParser::generateEventsForRevision(MediaWiki\Revision\RevisionStoreRecord, boolean)
#9 /srv/mediawiki/php-1.37.0-wmf.18/includes/deferred/MWCallableUpdate.php(38): EchoHooks::{closure}()
#10 /srv/mediawiki/php-1.37.0-wmf.18/includes/deferred/DeferredUpdates.php(515): MWCallableUpdate->doUpdate()
#11 /srv/mediawiki/php-1.37.0-wmf.18/includes/deferred/DeferredUpdates.php(391): DeferredUpdates::attemptUpdate(MWCallableUpdate, Wikimedia\Rdbms\LBFactoryMulti)
#12 /srv/mediawiki/php-1.37.0-wmf.18/includes/deferred/DeferredUpdates.php(221): DeferredUpdates::run(MWCallableUpdate, Wikimedia\Rdbms\LBFactoryMulti, Monolog\Logger, BufferingStatsdDataFactory, string)
#13 /srv/mediawiki/php-1.37.0-wmf.18/includes/deferred/DeferredUpdatesScope.php(267): DeferredUpdates::{closure}(MWCallableUpdate, integer)
#14 /srv/mediawiki/php-1.37.0-wmf.18/includes/deferred/DeferredUpdatesScope.php(196): DeferredUpdatesScope->processStageQueue(integer, integer, Closure)
#15 /srv/mediawiki/php-1.37.0-wmf.18/includes/deferred/DeferredUpdates.php(242): DeferredUpdatesScope->processUpdates(integer, Closure)
#16 /srv/mediawiki/php-1.37.0-wmf.18/includes/MediaWiki.php(1136): DeferredUpdates::doUpdates(string)
#17 /srv/mediawiki/php-1.37.0-wmf.18/includes/MediaWiki.php(846): MediaWiki->restInPeace()
#18 /srv/mediawiki/php-1.37.0-wmf.18/includes/MediaWiki.php(584): MediaWiki->doPostOutputShutdown()
#19 /srv/mediawiki/php-1.37.0-wmf.18/index.php(53): MediaWiki->run()
#20 /srv/mediawiki/php-1.37.0-wmf.18/index.php(46): wfIndexMain()
#21 /srv/mediawiki/w/index.php(3): require(string)
#22 {main}
Impact
  1. Echo notifications will not be sent for some edits where they should have been
  2. logspam.
Notes

Not sure if there is visible breakage but there is quite a lot of logspam from this.

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

This may be a train blocker (T281159) if the error rate goes up significantly after deploying to group2 wikis, however, it may be isolated to commons in which case I don't expect the error rate to change.

mmodell triaged this task as High priority.Aug 12 2021, 8:19 PM

The impact of this is that Echo notifications will not be sent for some edits where they should have been. No other visible breakage.

I'll prepare a quick patch to fail more neatly in this case, and thus limit the impact further to only DiscussionTools notifications (which are pre-beta right now), which will unblock the train if backported. I'll investigate more closely tomorrow.

Change 712576 had a related patch set uploaded (by Bartosz Dziewoński; author: Bartosz Dziewoński):

[mediawiki/extensions/DiscussionTools@master] EventDispatcher: Remove failing invariant check

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

Change 711720 had a related patch set uploaded (by 20after4; author: Bartosz Dziewoński):

[mediawiki/extensions/DiscussionTools@wmf/1.37.0-wmf.18] EventDispatcher: Remove failing invariant check

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

Change 712576 merged by jenkins-bot:

[mediawiki/extensions/DiscussionTools@master] EventDispatcher: Remove failing invariant check

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

Change 711720 merged by jenkins-bot:

[mediawiki/extensions/DiscussionTools@wmf/1.37.0-wmf.18] EventDispatcher: Remove failing invariant check

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

Mentioned in SAL (#wikimedia-operations) [2021-08-12T21:13:19Z] <twentyafterfour@deploy1002> Synchronized php-1.37.0-wmf.18/extensions/DiscussionTools/includes/Notifications/EventDispatcher.php: sync Ic27418a0ec976347be5fa586bbd32cc4a0d8d511 to unblock the train refs T288775 and T281159 (duration: 01m 07s)

Deployed and no longer spamming logs. leaving the task open to track any further work but this is no longer a blocker.

Change 713054 had a related patch set uploaded (by Bartosz Dziewoński; author: Bartosz Dziewoński):

[mediawiki/extensions/DiscussionTools@master] EventDispatcher: Fix ignoring level 3+ headings

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

Change 713054 merged by jenkins-bot:

[mediawiki/extensions/DiscussionTools@master] EventDispatcher: Fix ignoring level 3+ headings

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

matmarex added a project: Skipped QA.

Logstash search showing the errors, for reference: https://logstash.wikimedia.org/goto/bf4338fa3af353cd46d05eb959c76dd8

image.png (511×2 px, 67 KB)

The errors occurred on pages that started with a level 3 heading, without any level 2 headings or comments preceding it. DiscussionTools topic subscription feature only allows subscribing to level 2 headings, and so it tried to find the preceding level 2 heading to generate notifications for those subscribed to it, and failed when there wasn't one.

ppelberg claimed this task.