See https://pastebin.com/U2EjQeCf:
...Re-storing serialized dumps as JSON-encoded arrays for all rows (3/4). PHP Notice: unserialize(): Error at offset 493 of 5608 bytes in /(wiki path)/extensions/AbuseFilter/maintenance/updateVarDumps.php on line 526 [9f481c3285afaa7bdc402410] [no req] TypeError from line 569 of /(wiki path)/extensions/AbuseFilter/maintenance/updateVarDumps.php: Argument 1 passed to UpdateVarDumps::updateVariables() must be of the type array, bool given, called in /(wiki path)/extensions/AbuseFilter/maintenance/updateVarDumps.php on line 531 Backtrace: #0 /(wiki path)/extensions/AbuseFilter/maintenance/updateVarDumps.php(531): UpdateVarDumps->updateVariables() #1 /(wiki path)/extensions/AbuseFilter/maintenance/updateVarDumps.php(485): UpdateVarDumps->doUpdateText() #2 /(wiki path)/extensions/AbuseFilter/maintenance/updateVarDumps.php(103): UpdateVarDumps->updateText() #3 /(wiki path)/maintenance/includes/LoggedUpdateMaintenance.php(45): UpdateVarDumps->doDBUpdates() #4 /(wiki path)/maintenance/update.php(193): LoggedUpdateMaintenance->execute() #5 /(wiki path)/maintenance/doMaintenance.php(107): UpdateMediaWiki->execute() #6 /(wiki path)/maintenance/update.php(253): require_once(string) #7 {main}
Investigation result:
I tried playing around with the truncated dump at T264513#6514943 (padded to reach the lengths hardcoded in the PHP serialization format). Results:
- The bug cannot be reproduced by putting that dump in the abuse_filter_log table, i.e. what would have happened in 2009, because the script would recognize and rebuild it in step 1
- However, it can be reproduced if that same truncated dump is inserted into the text table, and the same error message reported above is shown when running the script
So my theories are:
- An unknown bug caused the truncated dump to get to the text table
- The truncated dump was in the abuse_filter_log table; the script tried rebuilding it but failed without knowing, producing another truncated dump that was inserted into the text table.
- Something else
None of these is really convincing, and it's hard to tell without further data. However, we don't need to investigate the root cause unless this bug is seen again.