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