From: Brion Vibber Date: Thu, 2 Aug 2007 04:15:30 +0000 (+0000) Subject: Quick fix for dump problem: X-Git-Tag: 1.31.0-rc.0~51891 X-Git-Url: http://git.cyclocoop.org/%24image?a=commitdiff_plain;h=24cc59f3b97df1b8e1a68068e22ec7a252cd47be;p=lhc%2Fweb%2Fwiklou.git 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. --- 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;