Page MenuHomePhabricator

Argument 5 passed to MediaWiki\Extension\AbuseFilter\Filter\Specs::__construct() must be of the type string, null given, called in /srv/mediawiki/php-1.36.0-wmf.20/extensions/AbuseFilter/includes/FilterLookup.php on line 346
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error

MediaWiki version: 1.36.0-wmf.20

message
Argument 5 passed to MediaWiki\Extension\AbuseFilter\Filter\Specs::__construct() must be of the type string, null given, called in /srv/mediawiki/php-1.36.0-wmf.20/extensions/AbuseFilter/includes/FilterLookup.php on line 346

Impact

Notes

Details

Request ID
X8g3GApAMNUAA5Bv260AAADL
Request URL
https://commons.wikimedia.org/wiki/Special:AbuseFilter/history/28/item/127
Stack Trace
exception.trace
#0 /srv/mediawiki/php-1.36.0-wmf.20/extensions/AbuseFilter/includes/FilterLookup.php(346): MediaWiki\Extension\AbuseFilter\Filter\Specs->__construct(string, string, string, array, NULL)
#1 /srv/mediawiki/php-1.36.0-wmf.20/extensions/AbuseFilter/includes/FilterLookup.php(329): MediaWiki\Extension\AbuseFilter\FilterLookup->filterFromRow(stdClass, array)
#2 /srv/mediawiki/php-1.36.0-wmf.20/extensions/AbuseFilter/includes/FilterLookup.php(266): MediaWiki\Extension\AbuseFilter\FilterLookup->getFilterFromHistory(stdClass)
#3 /srv/mediawiki/php-1.36.0-wmf.20/extensions/AbuseFilter/includes/Views/AbuseFilterViewEdit.php(1121): MediaWiki\Extension\AbuseFilter\FilterLookup->getFilterVersion(integer)
#4 /srv/mediawiki/php-1.36.0-wmf.20/extensions/AbuseFilter/includes/Views/AbuseFilterViewEdit.php(100): AbuseFilterViewEdit->loadFromDatabase(integer, integer)
#5 /srv/mediawiki/php-1.36.0-wmf.20/extensions/AbuseFilter/includes/special/SpecialAbuseFilter.php(63): AbuseFilterViewEdit->show()
#6 /srv/mediawiki/php-1.36.0-wmf.20/includes/specialpage/SpecialPage.php(645): SpecialAbuseFilter->execute(string)
#7 /srv/mediawiki/php-1.36.0-wmf.20/includes/specialpage/SpecialPageFactory.php(1402): SpecialPage->run(string)
#8 /srv/mediawiki/php-1.36.0-wmf.20/includes/MediaWiki.php(310): MediaWiki\SpecialPage\SpecialPageFactory->executePath(Title, RequestContext)
#9 /srv/mediawiki/php-1.36.0-wmf.20/includes/MediaWiki.php(945): MediaWiki->performRequest()
#10 /srv/mediawiki/php-1.36.0-wmf.20/includes/MediaWiki.php(548): MediaWiki->main()
#11 /srv/mediawiki/php-1.36.0-wmf.20/index.php(53): MediaWiki->run()
#12 /srv/mediawiki/php-1.36.0-wmf.20/index.php(46): wfIndexMain()
#13 /srv/mediawiki/w/index.php(3): require(string)
#14 {main}

Event Timeline

Oh, apparently rEABFdc207d0cbd75a35a77e03410388b5b05d78fceb8 added a default of 'default' for abuse_filter.af_group, but not for abuse_filter_history.afh_group, so rows created before that commit have a null field.

  • Quick solution: add normalization to FilterLookup::getFilterFromHistory
  • Long-term solution: add a default to that field. It will make old filters appear as if they were created in the 'default' group, but I don't think it's a problem

@Daimona Do we know if the specific Fatal TypeError seen here is newly caused? Should we halt rollout to group2?

Change 644966 had a related patch set uploaded (by DannyS712; owner: DannyS712):
[mediawiki/extensions/AbuseFilter@master] Cast $row->af_group to string when creating Specs

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

@Daimona Do we know if the specific Fatal TypeError seen here is newly caused? Should we halt rollout to group2?

Hm, yes, it was included in .19, which was deployed together with .20. It prevents viewing old versions of filters, created before 2012. Not serious enough to revert, but serious enough to backport a fix before moving on.

https://gerrit.wikimedia.org/r/644966 proposes a fix though it is not ready yet. Is there a change we can easily revert to unblock the train or should we hold on the fix to be completed?

Is there a change we can easily revert to unblock the train or should we hold on the fix to be completed?

The revert would be painful. Let me update the fix

Change 644966 merged by jenkins-bot:
[mediawiki/extensions/AbuseFilter@master] Use 'default' as default group when reading filters from history

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

Change 644984 had a related patch set uploaded (by Jforrester; owner: DannyS712):
[mediawiki/extensions/AbuseFilter@wmf/1.36.0-wmf.20] Use 'default' as default group when reading filters from history

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

Change 644984 merged by jenkins-bot:
[mediawiki/extensions/AbuseFilter@wmf/1.36.0-wmf.20] Use 'default' as default group when reading filters from history

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

Mentioned in SAL (#wikimedia-operations) [2020-12-03T19:57:06Z] <hashar@deploy1001> Synchronized php-1.36.0-wmf.20/extensions/AbuseFilter/includes/FilterLookup.php: Use 'default' as default group when reading filters from history - T269314 (duration: 01m 05s)

hashar assigned this task to Daimona.
hashar added subscribers: DannyS712, thiemowmde.