Page MenuHomePhabricator

PHP 7.2 gate-and-submit for some extensions fails due to deprecated function each() in CirrusSearch / Elastica
Closed, ResolvedPublic

Description

We’ve just had two gate-and-submit jobs for WikibaseQualityConstraints on php72 fail (1, 2) because of a deprecated function call buried in Elastica:

16:20:44 There was 1 error:
16:20:44 
16:20:44 1) CirrusSearch\Test\RequestLoggerTest::testRequestLogging with data set "completion_basic_001" (array('completion', 'main p'), array(array(array(array(13, false, array(4, 4, 0), array(0, 0, array()), array(array(array('main p', 0, 6, array(array('Main Page', 'cirrustestwiki_titlesuggest_1485266182', 'titlesuggest', '1t', 5679327)))), array(array('main p', 0, 6, array(array('Main Page', 'cirrustestwiki_titlesuggest_1485266182', 'titlesuggest', '1t', 29487956)))), array(array('main p', 0, 6, array(array('Main Page', 'cirrustestwiki_titlesuggest_1485266182', 'titlesuggest', '1t', 5679327)))), array(array('main p', 0, 6, array(array('Main Page', 'cirrustestwiki_titlesuggest_1485266182', 'titlesuggest', '1t', 23590364))))))))), array(array('CirrusSearchRequestSet', array(array(), array(), '127.0.0.1', array('', '0', '', ''), array(array(0, array(array('wiki_titlesuggest', 1, 'plain', 5679327, 'Main Page')), 0, 1, 4, array('wiki_titlesuggest'), -1, 5679327, array(), array(), 'main p', 'comp_suggest', '', false)), 'cli', ''), 'debug', ''), array('CirrusSearchRequests', array(0, '123456789', 0, 1, 4, '2c33c9c64851a02e2ba8143c6550a3b8', 'wiki_titlesuggest', 5679327, 'main p', 'comp_suggest', 'cli', 0), 'debug', '{queryType} search for '{quer...cutor}')))
16:20:44 The each() function is deprecated. This message will be suppressed on further calls
16:20:44 
16:20:44 /workspace/src/vendor/ruflin/elastica/lib/Elastica/Multi/MultiBuilder.php:50
16:20:44 /workspace/src/vendor/ruflin/elastica/lib/Elastica/Multi/MultiBuilder.php:17
16:20:44 /workspace/src/vendor/ruflin/elastica/lib/Elastica/Multi/Search.php:152
16:20:44 /workspace/src/extensions/CirrusSearch/includes/CompletionSuggester.php:213
16:20:44 /workspace/src/extensions/CirrusSearch/includes/Util.php:119
16:20:44 /workspace/src/includes/poolcounter/PoolCounterWorkViaCallback.php:69
16:20:44 /workspace/src/includes/poolcounter/PoolCounterWork.php:123
16:20:44 /workspace/src/extensions/CirrusSearch/includes/Util.php:177
16:20:44 /workspace/src/extensions/CirrusSearch/includes/CompletionSuggester.php:225
16:20:44 /workspace/src/extensions/CirrusSearch/tests/phpunit/RequestLoggerTest.php:192
16:20:44 /workspace/src/extensions/CirrusSearch/tests/phpunit/RequestLoggerTest.php:105
16:20:44 /workspace/src/extensions/CirrusSearch/tests/phpunit/RequestLoggerTest.php:218
16:20:44 /workspace/src/tests/phpunit/MediaWikiTestCase.php:424
16:20:44 /workspace/src/maintenance/doMaintenance.php:94

Failing extensions include:

  • WikibaseQualityConstraints (#7, #8)
  • PropertySuggester (#12)
  • …?

Event Timeline

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

Adding Continuous-Integration-Config because quibble-composer-mysql-php72-docker seems to be new (the jobs above are #7 and #8) – perhaps it could be made non-voting for a time?

Apparently, in mediawiki-vendor a patch was backported to stop using that function (T190024, I2dc6687735), but there’s no upstream release we could use that doesn’t also require an elasticsearch version we can’t support yet :/

Lucas_Werkmeister_WMDE renamed this task from WBQC gate-and-submit fails due to deprecated function in CirrusSearch / Elastica to PHP 7.2 gate-and-submit for some extensions fails due to deprecated function each() in CirrusSearch / Elastica.Nov 14 2018, 5:20 PM

Apparently, in mediawiki-vendor a patch was backported to stop using that function (T190024, I2dc6687735), but there’s no upstream release we could use that doesn’t also require an elasticsearch version we can’t support yet :/

Aren't we running CI for master with that version of vendor, though?

At least High, possibly UBN; this is blocking merge in two or more repos.

  • Either we switch CI for those extensions to use vendor and not composer
  • Or fork elastica and tag a release for the purposes of just backporting this patch

I can work on the first option in an hour or so.

Legoktm added a project: PHP 7.2 support.

Should be fixed now, please re-open if its not.