Page MenuHomePhabricator

Flow: PHP Notice: Trying to get property [...] of non-object
Closed, ResolvedPublicPRODUCTION ERROR

Description

On wikidata wmf.4 logstash reported three very similar errors. I checked enabling Structured Discussion on wikidata - seems to be ok.

Error
normalized_message
[{reqId}] {exception_url}   PHP Notice: Trying to get property 'wt' of non-object
exception.trace
from /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/TemplateHelper.php(49)
#0 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/TemplateHelper.php(49): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/TemplateHelper.php(27): Flow\Import\TemplateHelper::getTemplateName(string)
#2 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/OptInController.php(593): Flow\Import\TemplateHelper::removeFromHtml(string, string)
#3 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/OptInController.php(188): Flow\Import\OptInController->removeArchiveTemplateFromWikitextTalkpage(Title)
#4 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/OptInController.php(120): Flow\Import\OptInController->disable(Title)
#5 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/MWCallableUpdate.php(38): Flow\Import\OptInController->Flow\Import\{closure}()
#6 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdates.php(513): MWCallableUpdate->doUpdate()
#7 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdates.php(390): DeferredUpdates::attemptUpdate(MWCallableUpdate, Wikimedia\Rdbms\LBFactoryMulti)
#8 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdates.php(221): DeferredUpdates::run(MWCallableUpdate, Wikimedia\Rdbms\LBFactoryMulti, Monolog\Logger, BufferingStatsdDataFactory, string)
#9 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdatesScope.php(267): DeferredUpdates::{closure}(MWCallableUpdate, integer)
#10 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdatesScope.php(196): DeferredUpdatesScope->processStageQueue(integer, integer, Closure)
#11 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdates.php(242): DeferredUpdatesScope->processUpdates(integer, Closure)
#12 /srv/mediawiki/php-1.37.0-wmf.4/includes/MediaWiki.php(1127): DeferredUpdates::doUpdates(string)
#13 /srv/mediawiki/php-1.37.0-wmf.4/includes/MediaWiki.php(837): MediaWiki->restInPeace()
#14 /srv/mediawiki/php-1.37.0-wmf.4/includes/MediaWiki.php(575): MediaWiki->doPostOutputShutdown()
#15 /srv/mediawiki/php-1.37.0-wmf.4/index.php(53): MediaWiki->run()
#16 /srv/mediawiki/php-1.37.0-wmf.4/index.php(46): wfIndexMain()
#17 /srv/mediawiki/w/index.php(3): require(string)
#18 {main}

Error
normalized_message
[{reqId}] {exception_url}   PHP Notice: Trying to get property 'template' of non-object
exception.trace
from /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/TemplateHelper.php(49)
#0 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/TemplateHelper.php(49): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/TemplateHelper.php(27): Flow\Import\TemplateHelper::getTemplateName(string)
#2 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/OptInController.php(593): Flow\Import\TemplateHelper::removeFromHtml(string, string)
#3 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/OptInController.php(188): Flow\Import\OptInController->removeArchiveTemplateFromWikitextTalkpage(Title)
#4 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/OptInController.php(120): Flow\Import\OptInController->disable(Title)
#5 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/MWCallableUpdate.php(38): Flow\Import\OptInController->Flow\Import\{closure}()
#6 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdates.php(513): MWCallableUpdate->doUpdate()
#7 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdates.php(390): DeferredUpdates::attemptUpdate(MWCallableUpdate, Wikimedia\Rdbms\LBFactoryMulti)
#8 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdates.php(221): DeferredUpdates::run(MWCallableUpdate, Wikimedia\Rdbms\LBFactoryMulti, Monolog\Logger, BufferingStatsdDataFactory, string)
#9 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdatesScope.php(267): DeferredUpdates::{closure}(MWCallableUpdate, integer)
#10 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdatesScope.php(196): DeferredUpdatesScope->processStageQueue(integer, integer, Closure)
#11 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdates.php(242): DeferredUpdatesScope->processUpdates(integer, Closure)
#12 /srv/mediawiki/php-1.37.0-wmf.4/includes/MediaWiki.php(1127): DeferredUpdates::doUpdates(string)
#13 /srv/mediawiki/php-1.37.0-wmf.4/includes/MediaWiki.php(837): MediaWiki->restInPeace()
#14 /srv/mediawiki/php-1.37.0-wmf.4/includes/MediaWiki.php(575): MediaWiki->doPostOutputShutdown()
#15 /srv/mediawiki/php-1.37.0-wmf.4/index.php(53): MediaWiki->run()
#16 /srv/mediawiki/php-1.37.0-wmf.4/index.php(46): wfIndexMain()
#17 /srv/mediawiki/w/index.php(3): require(string)
#18 {main}

Error
normalized_message
[{reqId}] {exception_url}   PHP Notice: Trying to get property 'target' of non-object
exception.trace
from /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/TemplateHelper.php(49)
#0 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/TemplateHelper.php(49): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/TemplateHelper.php(27): Flow\Import\TemplateHelper::getTemplateName(string)
#2 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/OptInController.php(593): Flow\Import\TemplateHelper::removeFromHtml(string, string)
#3 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/OptInController.php(188): Flow\Import\OptInController->removeArchiveTemplateFromWikitextTalkpage(Title)
#4 /srv/mediawiki/php-1.37.0-wmf.4/extensions/Flow/includes/Import/OptInController.php(120): Flow\Import\OptInController->disable(Title)
#5 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/MWCallableUpdate.php(38): Flow\Import\OptInController->Flow\Import\{closure}()
#6 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdates.php(513): MWCallableUpdate->doUpdate()
#7 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdates.php(390): DeferredUpdates::attemptUpdate(MWCallableUpdate, Wikimedia\Rdbms\LBFactoryMulti)
#8 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdates.php(221): DeferredUpdates::run(MWCallableUpdate, Wikimedia\Rdbms\LBFactoryMulti, Monolog\Logger, BufferingStatsdDataFactory, string)
#9 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdatesScope.php(267): DeferredUpdates::{closure}(MWCallableUpdate, integer)
#10 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdatesScope.php(196): DeferredUpdatesScope->processStageQueue(integer, integer, Closure)
#11 /srv/mediawiki/php-1.37.0-wmf.4/includes/deferred/DeferredUpdates.php(242): DeferredUpdatesScope->processUpdates(integer, Closure)
#12 /srv/mediawiki/php-1.37.0-wmf.4/includes/MediaWiki.php(1127): DeferredUpdates::doUpdates(string)
#13 /srv/mediawiki/php-1.37.0-wmf.4/includes/MediaWiki.php(837): MediaWiki->restInPeace()
#14 /srv/mediawiki/php-1.37.0-wmf.4/includes/MediaWiki.php(575): MediaWiki->doPostOutputShutdown()
#15 /srv/mediawiki/php-1.37.0-wmf.4/index.php(53): MediaWiki->run()
#16 /srv/mediawiki/php-1.37.0-wmf.4/index.php(46): wfIndexMain()
#17 /srv/mediawiki/w/index.php(3): require(string)
#18 {main}

Details

Request URL
https://www.wikidata.org/wiki/Special:Preferences
Related Changes in Gerrit:

Event Timeline

Tgr renamed this task from PHP Notice: Trying to get property [...] of non-object to Flow: PHP Notice: Trying to get property [...] of non-object.May 6 2021, 11:49 AM

The relevant code is

$name = self::getTemplateName( $templateNode->getAttribute( 'data-mw' ) );

and then

$mwAttr = json_decode( $dataMW );
return $mwAttr->parts[0]->template->target->wt;

This is somehow related to Parsoid (which puts JSON-serialized objects into the data-mw property; the code tries to extract data from that object and fails, maybe because parts is empty). The whole code is in a try-catch block with an empty catch handler so the errors are presumably ignorable; we just need to figure out why they are not ignored (PHP Exception -> Throwable transition, maybe?). Potentially an easy fix.

mewoph subscribed.

These errors haven't occurred in the last 90 days. Lowering the priority & moving to triaged

@mewoph: If noone can reproduce an error at all anymore, is there a reason to keep its ticket open?

kostajh claimed this task.
dancy subscribed.

Saw another instance of these today.

Error
normalized_message
[{reqId}] {exception_url}   PHP Notice: Trying to get property 'target' of non-object
exception.trace
from /srv/mediawiki/php-1.38.0-wmf.4/extensions/Flow/includes/Import/TemplateHelper.php(49)
#0 /srv/mediawiki/php-1.38.0-wmf.4/extensions/Flow/includes/Import/TemplateHelper.php(49): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-1.38.0-wmf.4/extensions/Flow/includes/Import/TemplateHelper.php(27): Flow\Import\TemplateHelper::getTemplateName(string)
#2 /srv/mediawiki/php-1.38.0-wmf.4/extensions/Flow/includes/Import/OptInController.php(686): Flow\Import\TemplateHelper::removeFromHtml(string, string)
#3 /srv/mediawiki/php-1.38.0-wmf.4/extensions/Flow/includes/Import/OptInController.php(528): Flow\Import\OptInController::Flow\Import\{closure}(string)
#4 /srv/mediawiki/php-1.38.0-wmf.4/extensions/Flow/includes/Import/OptInController.php(689): Flow\Import\OptInController->editBoardDescription(Title, Closure, string)
#5 /srv/mediawiki/php-1.38.0-wmf.4/extensions/Flow/includes/Import/OptInController.php(183): Flow\Import\OptInController->archiveFlowBoard(Title)
#6 /srv/mediawiki/php-1.38.0-wmf.4/extensions/Flow/includes/Import/OptInController.php(120): Flow\Import\OptInController->disable(Title)
#7 /srv/mediawiki/php-1.38.0-wmf.4/includes/deferred/MWCallableUpdate.php(38): Flow\Import\OptInController->Flow\Import\{closure}()
#8 /srv/mediawiki/php-1.38.0-wmf.4/includes/deferred/DeferredUpdates.php(515): MWCallableUpdate->doUpdate()
#9 /srv/mediawiki/php-1.38.0-wmf.4/includes/deferred/DeferredUpdates.php(391): DeferredUpdates::attemptUpdate(MWCallableUpdate, Wikimedia\Rdbms\LBFactoryMulti)
#10 /srv/mediawiki/php-1.38.0-wmf.4/includes/deferred/DeferredUpdates.php(221): DeferredUpdates::run(MWCallableUpdate, Wikimedia\Rdbms\LBFactoryMulti, Monolog\Logger, BufferingStatsdDataFactory, string)
#11 /srv/mediawiki/php-1.38.0-wmf.4/includes/deferred/DeferredUpdatesScope.php(267): DeferredUpdates::{closure}(MWCallableUpdate, integer)
#12 /srv/mediawiki/php-1.38.0-wmf.4/includes/deferred/DeferredUpdatesScope.php(196): DeferredUpdatesScope->processStageQueue(integer, integer, Closure)
#13 /srv/mediawiki/php-1.38.0-wmf.4/includes/deferred/DeferredUpdates.php(242): DeferredUpdatesScope->processUpdates(integer, Closure)
#14 /srv/mediawiki/php-1.38.0-wmf.4/includes/MediaWiki.php(1136): DeferredUpdates::doUpdates()
#15 /srv/mediawiki/php-1.38.0-wmf.4/includes/MediaWiki.php(846): MediaWiki->restInPeace()
#16 /srv/mediawiki/php-1.38.0-wmf.4/includes/MediaWiki.php(584): MediaWiki->doPostOutputShutdown()
#17 /srv/mediawiki/php-1.38.0-wmf.4/index.php(53): MediaWiki->run()
#18 /srv/mediawiki/php-1.38.0-wmf.4/index.php(46): wfIndexMain()
#19 /srv/mediawiki/w/index.php(3): require(string)
#20 {main}
Notes

Showed up as a series of three errors, one each for "wt", "template", and "target".

Change 730947 had a related patch set uploaded (by Gergő Tisza; author: Gergő Tisza):

[mediawiki/extensions/Flow@master] Suppress notices in TemplateHelper

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

Change 730947 merged by jenkins-bot:

[mediawiki/extensions/Flow@master] Suppress notices in TemplateHelper

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

Checked wmf.5 - the error(s) are not present anymore.