When I run update.php while updating from 1.22 to 1.23, amongst other things the script maintenance/populateRevisionLength.php is executed to populate the ar_len column.
However, this script does not always work correctly so that the following error occurs (code from populateRevisionLength.php):
- Go through and update ar_len from these rows.
foreach ( $res as $row ) {
$rev = Revision::newFromArchiveRow( $row ); $content = $rev->getContent(); if ( !$content ) { # This should not happen, but sometimes does (bug 20757) $this->output( "Content of archive {$row->ar_id} unavailable!\n" );
In my case this is _not_ caused by bug 20757. Instead, this is caused by the fact that for old archived revisions, the rows in the archive table do _not_ contain a pointer to the text in the text table, but that the text is stored in the archive table directly. Obviously the above code cannot handle this situation properly.
The line
$rev = Revision::newFromArchiveRow( $row );
does not work correctly in this case. It is unable to return information from inside an archive row.
Version: 1.23.0
Severity: normal
See Also:
https://bugzilla.wikimedia.org/show_bug.cgi?id=24538