From 24cc59f3b97df1b8e1a68068e22ec7a252cd47be Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Thu, 2 Aug 2007 04:15:30 +0000 Subject: [PATCH] Quick fix for dump problem: Errors are ignored on a connection once it's died, so additional exceptions weren't getting thrown. We weren't detecting this case and ended up spitting out the rest of the XML without any more text. Should now die correctly once the timeouts finish. --- maintenance/dumpTextPass.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/maintenance/dumpTextPass.php b/maintenance/dumpTextPass.php index a184094513..92ab4b4e73 100644 --- a/maintenance/dumpTextPass.php +++ b/maintenance/dumpTextPass.php @@ -239,17 +239,23 @@ class TextPassDumper extends BackupDumper { } while( true ) { try { - return $this->doGetText( $id ); + $text = $this->doGetText( $id ); + $ex = new MWException("Graceful storage failure"); } catch (DBQueryError $ex) { + $text = false; + } + if( $text === false ) { $this->failures++; if( $this->failures > $this->maxFailures ) { throw $ex; } else { $this->progress( "Database failure $this->failures " . - "of allowed $this->maxFailures! " . + "of allowed $this->maxFailures for revision $id! " . "Pausing $this->failureTimeout seconds..." ); sleep( $this->failureTimeout ); } + } else { + return $text; } } } @@ -264,6 +270,9 @@ class TextPassDumper extends BackupDumper { array( 'old_id' => $id ), 'TextPassDumper::getText' ); $text = Revision::getRevisionText( $row ); + if( $text === false ) { + return false; + } $stripped = str_replace( "\r", "", $text ); $normalized = UtfNormal::cleanUp( $stripped ); return $normalized; -- 2.20.1