Showing up in beta logstash. The following code is generating problems:
/** * Normalizes the metadata to wfTimestamp()'s TS_DB format * @param array &$metadata */ protected function normalizeMetadataTimestamps( array &$metadata ) { $fieldsToNormalize = [ 'DateTime', 'DateTimeOriginal' ]; foreach ( $fieldsToNormalize as $field ) { if ( isset( $metadata[$field] ) && isset( $metadata[$field]['value'] ) ) { $parsedTs = wfTimestamp( TS_DB, $metadata[$field]['value'] ); if ( $parsedTs ) { $metadata[$field]['value'] = $parsedTs; } } } }
$metadata[$field]['value'] is sometimes an array, but wfTimestamp's second parameter shouldn't be an array (should be string|int|float|bool|DateTime based on documentation of ConvertibleTimestamp::convert, but wfTimestamp is just documented as accepting mixed)
This results in at least three different possible errors in logstash
PHP Warning: preg_match() expects parameter 2 to be string, array given
#0 [internal function]: MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-master/vendor/wikimedia/timestamp/src/ConvertibleTimestamp.php(188): preg_match(string, array, NULL)
#2 /srv/mediawiki/php-master/vendor/wikimedia/timestamp/src/ConvertibleTimestamp.php(165): Wikimedia\Timestamp\ConvertibleTimestamp->setTimestamp(array)
#3 /srv/mediawiki/php-master/vendor/wikimedia/timestamp/src/ConvertibleTimestamp.php(275): Wikimedia\Timestamp\ConvertibleTimestamp->__construct(array)
#4 /srv/mediawiki/php-master/includes/GlobalFunctions.php(1816): Wikimedia\Timestamp\ConvertibleTimestamp::convert(integer, array)
#5 /srv/mediawiki/php-master/extensions/CommonsMetadata/src/DataCollector.php(459): wfTimestamp(integer, array)
#6 /srv/mediawiki/php-master/extensions/CommonsMetadata/src/DataCollector.php(96): CommonsMetadata\DataCollector->normalizeMetadataTimestamps(array)
#7 /srv/mediawiki/php-master/extensions/CommonsMetadata/src/HookHandler.php(75): CommonsMetadata\DataCollector->collect(array, ForeignAPIFile)
#8 /srv/mediawiki/php-master/includes/HookContainer/HookContainer.php(333): CommonsMetadata\HookHandler::onGetExtendedMetadata(array, ForeignAPIFile, RequestContext, boolean, integer)
#9 /srv/mediawiki/php-master/includes/HookContainer/HookContainer.php(140): MediaWiki\HookContainer\HookContainer->callLegacyHook(string, array, array, array)
#10 /srv/mediawiki/php-master/includes/HookContainer/HookRunner.php(1867): MediaWiki\HookContainer\HookContainer->run(string, array)
#11 /srv/mediawiki/php-master/includes/media/FormatMetadata.php(1814): MediaWiki\HookContainer\HookRunner->onGetExtendedMetadata(array, ForeignAPIFile, RequestContext, boolean, integer)
#12 /srv/mediawiki/php-master/includes/media/FormatMetadata.php(1731): FormatMetadata->getExtendedMetadataFromHook(ForeignAPIFile, array, integer)
#13 /srv/mediawiki/php-master/includes/api/ApiQueryImageInfo.php(584): FormatMetadata->fetchExtendedMetadata(ForeignAPIFile)
#14 /srv/mediawiki/php-master/includes/api/ApiQueryImageInfo.php(184): ApiQueryImageInfo::getInfo(ForeignAPIFile, array, ApiResult, NULL, array)
#15 /srv/mediawiki/php-master/includes/api/ApiQuery.php(263): ApiQueryImageInfo->execute()
#16 /srv/mediawiki/php-master/includes/api/ApiMain.php(1601): ApiQuery->execute()
#17 /srv/mediawiki/php-master/includes/api/ApiMain.php(581): ApiMain->executeAction()
#18 /srv/mediawiki/php-master/includes/api/ApiMain.php(552): ApiMain->executeActionWithErrorHandling()
#19 /srv/mediawiki/php-master/api.php(90): ApiMain->execute()
#20 /srv/mediawiki/php-master/api.php(45): wfApiMain()
#21 /srv/mediawiki/w/api.php(3): require(string)
#22 {main}PHP Notice: Array to string conversion
#0 /srv/mediawiki/php-master/vendor/wikimedia/timestamp/src/ConvertibleTimestamp.php(240): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-master/vendor/wikimedia/timestamp/src/ConvertibleTimestamp.php(165): Wikimedia\Timestamp\ConvertibleTimestamp->setTimestamp(array)
#2 /srv/mediawiki/php-master/vendor/wikimedia/timestamp/src/ConvertibleTimestamp.php(275): Wikimedia\Timestamp\ConvertibleTimestamp->__construct(array)
#3 /srv/mediawiki/php-master/includes/GlobalFunctions.php(1816): Wikimedia\Timestamp\ConvertibleTimestamp::convert(integer, array)
#4 /srv/mediawiki/php-master/extensions/CommonsMetadata/src/DataCollector.php(459): wfTimestamp(integer, array)
#5 /srv/mediawiki/php-master/extensions/CommonsMetadata/src/DataCollector.php(96): CommonsMetadata\DataCollector->normalizeMetadataTimestamps(array)
#6 /srv/mediawiki/php-master/extensions/CommonsMetadata/src/HookHandler.php(75): CommonsMetadata\DataCollector->collect(array, ForeignAPIFile)
#7 /srv/mediawiki/php-master/includes/HookContainer/HookContainer.php(333): CommonsMetadata\HookHandler::onGetExtendedMetadata(array, ForeignAPIFile, RequestContext, boolean, integer)
#8 /srv/mediawiki/php-master/includes/HookContainer/HookContainer.php(140): MediaWiki\HookContainer\HookContainer->callLegacyHook(string, array, array, array)
#9 /srv/mediawiki/php-master/includes/HookContainer/HookRunner.php(1867): MediaWiki\HookContainer\HookContainer->run(string, array)
#10 /srv/mediawiki/php-master/includes/media/FormatMetadata.php(1814): MediaWiki\HookContainer\HookRunner->onGetExtendedMetadata(array, ForeignAPIFile, RequestContext, boolean, integer)
#11 /srv/mediawiki/php-master/includes/media/FormatMetadata.php(1731): FormatMetadata->getExtendedMetadataFromHook(ForeignAPIFile, array, integer)
#12 /srv/mediawiki/php-master/includes/api/ApiQueryImageInfo.php(584): FormatMetadata->fetchExtendedMetadata(ForeignAPIFile)
#13 /srv/mediawiki/php-master/includes/api/ApiQueryImageInfo.php(184): ApiQueryImageInfo::getInfo(ForeignAPIFile, array, ApiResult, NULL, array)
#14 /srv/mediawiki/php-master/includes/api/ApiQuery.php(263): ApiQueryImageInfo->execute()
#15 /srv/mediawiki/php-master/includes/api/ApiMain.php(1601): ApiQuery->execute()
#16 /srv/mediawiki/php-master/includes/api/ApiMain.php(581): ApiMain->executeAction()
#17 /srv/mediawiki/php-master/includes/api/ApiMain.php(552): ApiMain->executeActionWithErrorHandling()
#18 /srv/mediawiki/php-master/api.php(90): ApiMain->execute()
#19 /srv/mediawiki/php-master/api.php(45): wfApiMain()
#20 /srv/mediawiki/w/api.php(3): require(string)
#21 {main}PHP Notice: Array to string conversion
#0 /srv/mediawiki/php-master/includes/GlobalFunctions.php(1818): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-master/extensions/CommonsMetadata/src/DataCollector.php(459): wfTimestamp(integer, array)
#2 /srv/mediawiki/php-master/extensions/CommonsMetadata/src/DataCollector.php(96): CommonsMetadata\DataCollector->normalizeMetadataTimestamps(array)
#3 /srv/mediawiki/php-master/extensions/CommonsMetadata/src/HookHandler.php(75): CommonsMetadata\DataCollector->collect(array, ForeignAPIFile)
#4 /srv/mediawiki/php-master/includes/HookContainer/HookContainer.php(333): CommonsMetadata\HookHandler::onGetExtendedMetadata(array, ForeignAPIFile, RequestContext, boolean, integer)
#5 /srv/mediawiki/php-master/includes/HookContainer/HookContainer.php(140): MediaWiki\HookContainer\HookContainer->callLegacyHook(string, array, array, array)
#6 /srv/mediawiki/php-master/includes/HookContainer/HookRunner.php(1867): MediaWiki\HookContainer\HookContainer->run(string, array)
#7 /srv/mediawiki/php-master/includes/media/FormatMetadata.php(1814): MediaWiki\HookContainer\HookRunner->onGetExtendedMetadata(array, ForeignAPIFile, RequestContext, boolean, integer)
#8 /srv/mediawiki/php-master/includes/media/FormatMetadata.php(1731): FormatMetadata->getExtendedMetadataFromHook(ForeignAPIFile, array, integer)
#9 /srv/mediawiki/php-master/includes/api/ApiQueryImageInfo.php(584): FormatMetadata->fetchExtendedMetadata(ForeignAPIFile)
#10 /srv/mediawiki/php-master/includes/api/ApiQueryImageInfo.php(184): ApiQueryImageInfo::getInfo(ForeignAPIFile, array, ApiResult, NULL, array)
#11 /srv/mediawiki/php-master/includes/api/ApiQuery.php(263): ApiQueryImageInfo->execute()
#12 /srv/mediawiki/php-master/includes/api/ApiMain.php(1601): ApiQuery->execute()
#13 /srv/mediawiki/php-master/includes/api/ApiMain.php(581): ApiMain->executeAction()
#14 /srv/mediawiki/php-master/includes/api/ApiMain.php(552): ApiMain->executeActionWithErrorHandling()
#15 /srv/mediawiki/php-master/api.php(90): ApiMain->execute()
#16 /srv/mediawiki/php-master/api.php(45): wfApiMain()
#17 /srv/mediawiki/w/api.php(3): require(string)
#18 {main}Appears to have started earlier today, though I don't see any recent changes to the extension that might have caused it
Impact so far: 14 errors https://logstash-beta.wmflabs.org/goto/64cdab090a58a42a9331d8d04e68aae6