Page MenuHomePhabricator

PHP Notice: Undefined offset: 0 in /.../includes/media/FormatMetadata.php on line 1045
Closed, ResolvedPublicPRODUCTION ERROR

Description

MW 1.23.8, PHP 5.4.36

This notice gets triggered when uploading a file, doing an action on a file and when runJobs.php is executed, probably even on more occasions related to files.

Edit on 2017-11-13: This basically happens with every version of MW since.

Event Timeline

Kghbln raised the priority of this task from to Needs Triage.
Kghbln updated the task description. (Show Details)
Kghbln subscribed.
Kghbln set Security to None.

https://github.com/wikimedia/mediawiki/blob/REL1_23/includes/media/FormatMetadata.php#L1057
https://github.com/wikimedia/mediawiki/blob/master/includes/media/FormatMetadata.php#L1057

I guess this should still be there in master (maybe?), but it's somewhat of a general purpose utility function, so could be used all over the place.

Bugs like this is why we put some stuff into master to get stack traces for non errors...

The problem is that the following setting does not provide a stack trace:

$wgShowExceptionDetails = true;

On the wiki there is silence, cron as well as shell both return:

PHP Notice:  Undefined offset: 0 in /.../includes/media/FormatMetadata.php on line 1057

The error log shows e.g. things like these:

[Sun Jan 25 20:48:24 2015] [error] [client 91.56.91.204] PHP Notice:  Undefined offset: 0 in /.../includes/media/FormatMetadata.php on line 1057, referer: https://beispiel.de/wiki/Special:UploadWindow
[Sun Jan 25 20:51:53 2015] [error] [client 91.56.91.204] PHP Notice:  Undefined offset: 0 in /.../includes/media/FormatMetadata.php on line 1057, referer: https://beispiel.de/w/index.php?title=Datei:Dateiname.gif&action=edit
[Sun Jan 25 21:45:53 2015] [error] [client 91.56.91.204] PHP Notice:  Undefined offset: 0 in /.../includes/media/FormatMetadata.php on line 1057, referer: https://beispiel.de/w/index.php?title=Special:Upload&wpDestFile=Dateiname.png&wpForReUpload=1

I have translated the names of the special pages.

On master? Try setting $wgLogExceptionBacktrace = true and then $wgDebugLogGroups['error'] to a file and see what the file contains...

Ah, now I get it. No not on master since this is a production use wiki. Will find a way to get more info out of this on a second instance. Stay tuned...

Ah, now I get it. No not on master since this is a production use wiki. Will find a way to get more info out of this on a second instance. Stay tuned...

Sweet, thanks :)

Maybe just try the affected file on a master dev wiki? It's most likely it's something that's being pulled from the file is actually at fault

I am very sorry that it took me so long to get back to this.

i tried to record the issue but nothing happend, i.e. no log was written. Just the general error log with $wgDebugLogFile which recorded everything but anything related to this issue as far as I can see. The wiki however still complains about this issue. :( By pure luck I ran into the following stack trace provide by the same line 1057 in FormatMetadata.php on another occasion just a couple of days ago:

PHP Notice: Undefined offset: 0 in /.../includes/media/FormatMetadata.php on line 1057
[35635588] [no req] Exception from line 77 of /.../includes/parser/StripState.php: Invalid marker: UNIQ069c85ad26d773a0-item-18--QINU
Backtrace:
#0 /.../includes/parser/StripState.php(66): StripState->addItem(string, string, string)
#1 /.../includes/parser/Parser.php(980): StripState->addGeneral(string, string)
#2 /.../extensions/Validator/src/legacy/ParserHook.php(302): Parser->insertStripItem(string, StripState)
#3 [internal function]: ParserHook->renderFunction(Parser, string, string)
#4 /.../extensions/Validator/src/legacy/ParserHook.php(336): call_user_func_array(array, array)
#5 /.../extensions/Validator/src/legacy/ParserHook.php(610): ParserHook->renderFunctionObj(Parser, PPFrame_DOM, array)
#6 [internal function]: ParserHookCaller->runFunctionHookObj(Parser, PPFrame_DOM, array)
#7 /.../includes/parser/Parser.php(3620): call_user_func_array(array, array)
#8 /.../includes/parser/Parser.php(3336): Parser->callParserFunction(PPFrame_DOM, string, array)
#9 /.../includes/parser/Preprocessor_DOM.php(1113): Parser->braceSubstitution(array, PPFrame_DOM)
#10 /.../includes/parser/Parser.php(3153): PPFrame_DOM->expand(PPNode_DOM, integer)
#11 /.../includes/parser/Parser.php(1216): Parser->replaceVariables(string)
#12 /.../includes/parser/Parser.php(395): Parser->internalParse(string)
#13 /.../extensions/SemanticMediaWiki/includes/ContentParser.php(189): Parser->parse(string, Title, ParserOptions, boolean, boolean, integer)
#14 /.../extensions/SemanticMediaWiki/includes/ContentParser.php(129): SMW\ContentParser->fetchFromParser()
#15 /.../extensions/SemanticMediaWiki/src/MediaWiki/Jobs/UpdateJob.php(83): SMW\ContentParser->parse()
#16 /.../extensions/SemanticMediaWiki/src/MediaWiki/Jobs/UpdateJob.php(71): SMW\MediaWiki\Jobs\UpdateJob->doPageContentParse()
#17 /.../extensions/SemanticMediaWiki/src/MediaWiki/Jobs/UpdateJob.php(50): SMW\MediaWiki\Jobs\UpdateJob->doUpdate()
#18 /.../extensions/SemanticMediaWiki/includes/storage/SQLStore/SMW_SQLStore3_SetupHandlers.php(403): SMW\MediaWiki\Jobs\UpdateJob->run()
#19 /.../extensions/SemanticMediaWiki/includes/storage/SQLStore/SMW_SQLStore3.php(424): SMWSQLStore3SetupHandlers->refreshData(integer, integer, boolean, boolean)
#20 /.../extensions/SemanticMediaWiki/src/Maintenance/DataRebuilder.php(229): SMWSQLStore3->refreshData(integer, integer, boolean, boolean)
#21 /.../extensions/SemanticMediaWiki/src/Maintenance/DataRebuilder.php(151): SMW\Maintenance\DataRebuilder->rebuildAll()
#22 /.../extensions/SemanticMediaWiki/maintenance/rebuildData.php(127): SMW\Maintenance\DataRebuilder->rebuild()
#23 /.../maintenance/doMaintenance.php(104): SMW\Maintenance\RebuildData->execute()
#24 /.../extensions/SemanticMediaWiki/maintenance/rebuildData.php(160): require_once(string)
#25 {main}

This one probably relates to issue T58226 fixed with this commit: https://gerrit.wikimedia.org/r/#/c/161994/1/includes/parser/Parser.php

If this one solves this very issue too I just have to wait another two years for the next LTS release to finally get rid of this.

Maybe just try the affected file on a master dev wiki? It's most likely it's something that's being pulled from the file is actually at fault

This would be really bad since two thirds of all files are affected. It's not just one or two.

Just for proper reference. For some reason I added the above mentioned issue to a new inappropriate location: [1]. I guess they are connected.

[1] https://github.com/SemanticMediaWiki/SemanticMediaWiki/issues/894

By pure luck I ran into the following stack trace provide by the same line 1057 in FormatMetadata.php on another occasion just a couple of days ago:

Not related. That's a notice for FormatMetadata.php#1057 followed by a stack trace for StripState.php#77. PHP does not show stack traces for notices. Try something like

set_error_handler( function( $errno, $errstr, $errfile = null, $errline = null, $errcontext = array() ) {
    try {
        throw new Exception( $errstr, $errno );
    } catch ( Exception $e ) {
        MWExceptionHandler::logException( $e );
        if ( isset( $errcontext['vals'] ) ) {
            wfDebug( var_export( array( 'errcontext_vals' => $errcontext['vals'] ), true ) );
        }
    }
} );

Ah, I get it. One of these days. This fix would have given me a long term perspective on this. Back to zero.

Admittedly I am still a bit goofy on this: The $e causes the wiki to crash fatally:

PHP Parse error:  syntax error, unexpected '$e' (T_VARIABLE), expecting identifier (T_STRING) or namespace (T_NAMESPACE) or \\\\ (T_NS_SEPARATOR) in /.../w/LocalSettings.php on line 643

Uhh, sorry, I should really test these first. I fixed the code.

No worries. Actually I thought that I did something wrong. The new code does not break the wiki from being shown but prevents scripts to be run. They just stop immediately without complaining I any way.

This issue is still present on MW 1.25.5, PHP 5.4.45

The good news is that MW 1.25 does log stacktraces for warnings.

The good news is that MW 1.25 does log stacktraces for warnings.

Yeah, thanks for the note @Tgr: Now added the following to "LocalSettings.php":

$wgLogExceptionBacktrace = true;
$wgDebugLogGroups['error'] = "/.../{$wgDBname}-debug-mw.log";
2016-01-05 18:10:18 phalaris 0212020151020-mw_: [c4b2d2b4] [no req]   ErrorException from line 1057 of /.../w/includes/media/FormatMetadata.php: PHP Notice: Undefined offset: 0
#0 /.../w/includes/media/FormatMetadata.php(1057): MWExceptionHandler::handleError(8, 'Undefined offse...', '/var/www/htdocs...', 1057, Array)
#1 /.../w/includes/media/FormatMetadata.php(971): FormatMetadata->flattenArrayReal(Array, 'ul')
#2 /.../w/includes/media/FormatMetadata.php(86): FormatMetadata->makeFormattedData(Array)
#3 /.../w/extensions/SemanticExtraSpecialProperties/src/Annotator/ExifDataAnnotator.php(113): FormatMetadata::getFormattedData(Array)
#4 /.../w/extensions/SemanticExtraSpecialProperties/src/Annotator/ExifDataAnnotator.php(97): SESP\Annotator\ExifDataAnnotator->addPropertyValuesFromExifData(Array)
#5 /.../w/extensions/SemanticExtraSpecialProperties/src/Annotator/ExifDataAnnotator.php(89): SESP\Annotator\ExifDataAnnotator->processExifData(Array)
#6 /.../w/extensions/SemanticExtraSpecialProperties/src/Annotator/ExtraPropertyAnnotator.php(315): SESP\Annotator\ExifDataAnnotator->addAnnotation()
#7 /.../w/extensions/SemanticExtraSpecialProperties/src/Annotator/ExtraPropertyAnnotator.php(180): SESP\Annotator\ExtraPropertyAnnotator->addPropertyValuesForExifData()
#8 /.../w/extensions/SemanticExtraSpecialProperties/src/Annotator/ExtraPropertyAnnotator.php(120): SESP\Annotator\ExtraPropertyAnnotator->createDataItemById('_EXIFDATA', Object(SMW\DIProperty))
#9 /.../w/extensions/SemanticExtraSpecialProperties/src/Annotator/ExtraPropertyAnnotator.php(72): SESP\Annotator\ExtraPropertyAnnotator->addPropertyValues()
#10 /.../w/extensions/SemanticExtraSpecialProperties/src/HookRegistry.php(101): SESP\Annotator\ExtraPropertyAnnotator->addAnnotation()
#11 [internal function]: SESP\HookRegistry->SESP\{closure}(Object(SMWSQLStore3), Object(SMW\SemanticData))
#12 /.../w/includes/Hooks.php(207): call_user_func_array(Object(Closure), Array)
#13 /.../w/includes/GlobalFunctions.php(3970): Hooks::run('SMWStore::updat...', Array, NULL)
#14 /.../w/extensions/SemanticMediaWiki/includes/storage/SMW_Store.php(218): wfRunHooks('SMWStore::updat...', Array)
#15 /.../w/extensions/SemanticMediaWiki/includes/StoreUpdater.php(183): SMW\Store->updateData(Object(SMW\SemanticData))
#16 /.../w/extensions/SemanticMediaWiki/includes/StoreUpdater.php(125): SMW\StoreUpdater->doRealUpdate(NULL)
#17 /.../w/extensions/SemanticMediaWiki/includes/StoreUpdater.php(92): SMW\StoreUpdater->performUpdate()
#18 /.../w/extensions/SemanticMediaWiki/includes/ParserData.php(261): SMW\StoreUpdater->doUpdate()
#19 /.../w/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/UpdateJob.php(165): SMW\ParserData->updateStore()
#20 /.../w/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/UpdateJob.php(148): SMW\MediaWiki\Jobs\UpdateJob->updateStore(Object(SMW\ParserData))
#21 /.../w/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/UpdateJob.php(119): SMW\MediaWiki\Jobs\UpdateJob->needToParsePageContentBeforeUpdate()
#22 /.../w/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/UpdateJob.php(88): SMW\MediaWiki\Jobs\UpdateJob->doPrepareForUpdate()
#23 /.../w/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/UpdateJob.php(57): SMW\MediaWiki\Jobs\UpdateJob->doUpdate()
#24 /.../w/extensions/SemanticMediaWiki/src/SQLStore/ByIdDataRebuildDispatcher.php(171): SMW\MediaWiki\Jobs\UpdateJob->run()
#25 /.../w/extensions/SemanticMediaWiki/src/Maintenance/DataRebuilder.php(247): SMW\SQLStore\ByIdDataRebuildDispatcher->dispatchRebuildFor(11294)
#26 /.../w/extensions/SemanticMediaWiki/src/Maintenance/DataRebuilder.php(147): SMW\Maintenance\DataRebuilder->doRebuildAll()
#27 /.../w/extensions/SemanticMediaWiki/maintenance/rebuildData.php(141): SMW\Maintenance\DataRebuilder->rebuild()
#28 /.../w/maintenance/doMaintenance.php(103): SMW\Maintenance\RebuildData->execute()
#29 /.../w/extensions/SemanticMediaWiki/maintenance/rebuildData.php(174): require_once('/var/www/htdocs...')
#30 {main}

Thanks! Can you help figure out what EXIF data is causing the warning? You could try replacing

$formattedExif = FormatMetadata::getFormattedData( $rawExif );

on line 113 of extensions/SemanticExtraSpecialProperties/src/Annotator/ExifDataAnnotator.php with something like

try {
    $formattedExif = FormatMetadata::getFormattedData( $rawExif );
} catch ( ErrorException $e ) {
    wfDebugLog( 'error', '!!!!!!!!' . var_export( $rawExif, true ) . '!!!!!!!!' );
    throw $e;
}

and then find the text between the !!!!!!!!s in the logfile? It would be easy to fix this by replacing $vals[0] with reset( $vals ) but from reading the code I get the feeling that $vals being an associative array is not supposed to happen.

Unfortunately I do not get any EXIF data. However I now identified some files causing the trouble:

Does this somehow help?

Should I perhaps try something like refreshImageMetadata.php -f and see if this helps?

Why the heck did Phabricator close this one T131214 is the duplicate

In 1.26 we are on line 1035 for this.

Setup and configuration

PHP 5.6.11-1ubuntu3.4 (apache2handler)
MySQL 5.6.30-0ubuntu0.15.10.1
MediaWiki 1.25.6 (01b4001) 21:49, 20 May 2016

A new stack trace with xdebug enabled:

PHP Notice:  Undefined offset: 0 in /.../w/includes/media/FormatMetadata.php on line 1057
PHP Stack trace:
PHP   1. {main}() /.../w/extensions/SemanticMediaWiki/maintenance/rebuildData.php:0
PHP   2. require_once() /.../w/extensions/SemanticMediaWiki/maintenance/rebuildData.php:197
PHP   3. SMW\Maintenance\RebuildData->execute() /.../w/maintenance/doMaintenance.php:103
PHP   4. SMW\Maintenance\DataRebuilder->rebuild() /.../w/extensions/SemanticMediaWiki/maintenance/rebuildData.php:149
PHP   5. SMW\Maintenance\DataRebuilder->doRebuildAll() /.../w/extensions/SemanticMediaWiki/src/Maintenance/DataRebuilder.php:167
PHP   6. SMW\Maintenance\DataRebuilder->doExecuteFor() /.../w/extensions/SemanticMediaWiki/src/Maintenance/DataRebuilder.php:266
PHP   7. SMW\SQLStore\ByIdDataRebuildDispatcher->dispatchRebuildFor() /.../w/extensions/SemanticMediaWiki/src/Maintenance/DataRebuilder.php:311
PHP   8. SMW\MediaWiki\Jobs\UpdateJob->run() /.../w/extensions/SemanticMediaWiki/src/SQLStore/ByIdDataRebuildDispatcher.php:191
PHP   9. SMW\MediaWiki\Jobs\UpdateJob->doUpdate() /.../w/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/UpdateJob.php:56
PHP  10. SMW\MediaWiki\Jobs\UpdateJob->doPrepareForUpdate() /.../w/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/UpdateJob.php:87
PHP  11. SMW\MediaWiki\Jobs\UpdateJob->needToParsePageContentBeforeUpdate() /.../w/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/UpdateJob.php:118
PHP  12. SMW\MediaWiki\Jobs\UpdateJob->updateStore() /.../w/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/UpdateJob.php:147
PHP  13. SMW\ParserData->updateStore() /.../w/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/UpdateJob.php:171
PHP  14. SMW\StoreUpdater->doUpdate() /.../w/extensions/SemanticMediaWiki/includes/ParserData.php:290
PHP  15. SMW\StoreUpdater->performUpdate() /.../w/extensions/SemanticMediaWiki/includes/StoreUpdater.php:92
PHP  16. SMW\StoreUpdater->doRealUpdate() /.../w/extensions/SemanticMediaWiki/includes/StoreUpdater.php:126
PHP  17. SMW\Store->updateData() /.../w/extensions/SemanticMediaWiki/includes/StoreUpdater.php:186
PHP  18. Hooks::run() /.../w/extensions/SemanticMediaWiki/includes/storage/SMW_Store.php:246
PHP  19. call_user_func_array:{/.../w/includes/Hooks.php:207}() /.../w/includes/Hooks.php:207
PHP  20. SESP\HookRegistry->SESP\{closure}() /.../w/includes/Hooks.php:207
PHP  21. SESP\Annotator\ExtraPropertyAnnotator->addAnnotation() /.../w/extensions/SemanticExtraSpecialProperties/src/HookRegistry.php:101
PHP  22. SESP\Annotator\ExtraPropertyAnnotator->addPropertyValues() /.../w/extensions/SemanticExtraSpecialProperties/src/Annotator/ExtraPropertyAnnotator.php:72
PHP  23. SESP\Annotator\ExtraPropertyAnnotator->createDataItemById() /.../w/extensions/SemanticExtraSpecialProperties/src/Annotator/ExtraPropertyAnnotator.php:120
PHP  24. SESP\Annotator\ExtraPropertyAnnotator->addPropertyValuesForExifData() /.../w/extensions/SemanticExtraSpecialProperties/src/Annotator/ExtraPropertyAnnotator.php:180
PHP  25. SESP\Annotator\ExifDataAnnotator->addAnnotation() /.../w/extensions/SemanticExtraSpecialProperties/src/Annotator/ExtraPropertyAnnotator.php:315
PHP  26. SESP\Annotator\ExifDataAnnotator->processExifData() /.../w/extensions/SemanticExtraSpecialProperties/src/Annotator/ExifDataAnnotator.php:89
PHP  27. SESP\Annotator\ExifDataAnnotator->addPropertyValuesFromExifData() /.../w/extensions/SemanticExtraSpecialProperties/src/Annotator/ExifDataAnnotator.php:97
PHP  28. FormatMetadata::getFormattedData() /.../w/extensions/SemanticExtraSpecialProperties/src/Annotator/ExifDataAnnotator.php:113
PHP  29. FormatMetadata->makeFormattedData() /.../w/includes/media/FormatMetadata.php:86
PHP  30. FormatMetadata->flattenArrayReal() /.../w/includes/media/FormatMetadata.php:971

In 1.26 we are on line 1035 for this.

I'm on MW 1.28 and still getting said issue on line 1045.

Thanks! Can you help figure out what EXIF data is causing the warning? You could try replacing

@Tgr I'm not sure if you want to follow up on this but I came across an example where return $vals[0]; will cause an "Undefined offset: 0".

As you can see in in the last example (from an internal parse), the index is not 0 but defined as "_MW_PNG_VERSION": "1" and doing $vals[0] will cause a problem with an associative array. Adding an extra isset check should make this method more resilient.

Of course, given that [0] is a home grown issue, maybe just throw the value away!

FormatMetadata::flattenArrayReal ... [
    "0"
]
FormatMetadata::flattenArrayReal ... [
    "1"
]
FormatMetadata::flattenArrayReal ... [
    "0"
]
FormatMetadata::flattenArrayReal ... [
    "8"
]
FormatMetadata::flattenArrayReal ... [
    "truecolour-alpha"
]
FormatMetadata::flattenArrayReal ... [
    "835"
]
FormatMetadata::flattenArrayReal ... [
    "381"
]
FormatMetadata::flattenArrayReal ... {
    "_MW_PNG_VERSION": "1"
}
@@ -1040,11 +1040,11 @@ class FormatMetadata extends ContextSource {
 			unset( $vals['_type'] );
 		}
 
 		if ( !is_array( $vals ) ) {
 			return $vals; // do nothing if not an array;
-		} elseif ( count( $vals ) === 1 && $type !== 'lang' ) {
+		} elseif ( count( $vals ) === 1 && $type !== 'lang' && isset( $vals[0] ) ) {
 			return $vals[0];

[0] https://github.com/wikimedia/mediawiki/blob/02c6e5822fd621264f4d83ca285bd0545d85a37c/includes/media/BitmapMetadataHandler.php#L219

Also happening on:

  • MediaWiki 1.29.0-rc.0 (37c22fc) 23:03, 22 June 2017
  • PHP 5.6.30-0+deb8u1 (apache2handler)
  • MariaDB 10.0.31-MariaDB-1~jessie

I must note that I am able to observe this on many wikis.

This could really need some love.

Kghbln renamed this task from PHP Notice: Undefined offset: 0 in /.../includes/media/FormatMetadata.php on line 1057 to PHP Notice: Undefined offset: 0 in /.../includes/media/FormatMetadata.php on line 1045 .Sep 4 2017, 6:22 AM

This is becoming an utterly annoying bug. It spams the error logs for years now. Any progress will be appreciated.

@Tgr Please can you acknowledge the https://phabricator.wikimedia.org/T87572#3306652 comment from 1 Jul? I do hate it when I waste my time while being on phab and people do not respond!

Change 402151 had a related patch set uploaded (by MarkAHershberger; owner: MarkAHershberger):
[mediawiki/core@master] Make FormatMetadata::flattenArrayReal() work for for an associative array

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

Submitted @mwjames patch. It was better than my crazy ideas about making sure the array wasn't associative.

Change 402151 merged by jenkins-bot:
[mediawiki/core@master] Make FormatMetadata::flattenArrayReal() work for an associative array

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

Change 402406 had a related patch set uploaded (by Reedy; owner: MarkAHershberger):
[mediawiki/core@REL1_27] Make FormatMetadata::flattenArrayReal() work for an associative array

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

Change 402407 had a related patch set uploaded (by Reedy; owner: MarkAHershberger):
[mediawiki/core@REL1_29] Make FormatMetadata::flattenArrayReal() work for an associative array

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

Change 402408 had a related patch set uploaded (by Reedy; owner: MarkAHershberger):
[mediawiki/core@REL1_30] Make FormatMetadata::flattenArrayReal() work for an associative array

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

MarkAHershberger claimed this task.

Since this has been merged and backported...

Since this has been merged and backported...

The backports were not yet merged. This will probably happen rather soon, so ... :) Thanks a lot to all involved getting this off the list!

Change 402408 merged by jenkins-bot:
[mediawiki/core@REL1_30] Make FormatMetadata::flattenArrayReal() work for an associative array

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

Change 402407 merged by jenkins-bot:
[mediawiki/core@REL1_29] Make FormatMetadata::flattenArrayReal() work for an associative array

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

Change 402406 merged by jenkins-bot:
[mediawiki/core@REL1_27] Make FormatMetadata::flattenArrayReal() work for an associative array

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

Change 407696 had a related patch set uploaded (by Ejegg; owner: MarkAHershberger):
[mediawiki/core@fundraising/REL1_27] Make FormatMetadata::flattenArrayReal() work for an associative array

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

Change 407696 merged by jenkins-bot:
[mediawiki/core@fundraising/REL1_27] Make FormatMetadata::flattenArrayReal() work for an associative array

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

mmodell changed the subtype of this task from "Task" to "Production Error".Aug 28 2019, 11:12 PM