From: Aaron Schulz Date: Thu, 6 Aug 2015 22:09:54 +0000 (-0700) Subject: Avoid update.php suggestion on DB connection errors X-Git-Tag: 1.31.0-rc.0~10469^2 X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/operations/?a=commitdiff_plain;h=51be75ba00c7f228e88485db5b7de39b57f66c3f;p=lhc%2Fweb%2Fwiklou.git Avoid update.php suggestion on DB connection errors Bug: T98788 Change-Id: I21974d6b775f13c33055f76c30142e937eb0e965 --- diff --git a/includes/db/Database.php b/includes/db/Database.php index 2ee45451d3..c58bdcd48e 100644 --- a/includes/db/Database.php +++ b/includes/db/Database.php @@ -3189,6 +3189,17 @@ abstract class DatabaseBase implements IDatabase { return false; } + /** + * Determines if the given query error was a connection drop + * STUB + * + * @param integer|string $errno + * @return bool + */ + public function wasConnectionError( $errno ) { + return false; + } + /** * Perform a deadlock-prone transaction. * diff --git a/includes/db/DatabaseError.php b/includes/db/DatabaseError.php index 86950a89a9..928de61612 100644 --- a/includes/db/DatabaseError.php +++ b/includes/db/DatabaseError.php @@ -329,12 +329,19 @@ class DBQueryError extends DBExpectedError { * @param string $fname */ function __construct( DatabaseBase $db, $error, $errno, $sql, $fname ) { - $message = "A database error has occurred. Did you forget to run " . - "maintenance/update.php after upgrading? See: " . - "https://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script\n" . - "Query: $sql\n" . - "Function: $fname\n" . - "Error: $errno $error\n"; + if ( $db->wasConnectionError( $errno ) ) { + $message = "A connection error occured. \n" . + "Query: $sql\n" . + "Function: $fname\n" . + "Error: $errno $error\n"; + } else { + $message = "A database error has occurred. Did you forget to run " . + "maintenance/update.php after upgrading? See: " . + "https://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script\n" . + "Query: $sql\n" . + "Function: $fname\n" . + "Error: $errno $error\n"; + } parent::__construct( $db, $message ); $this->error = $error; diff --git a/includes/db/DatabaseMysqlBase.php b/includes/db/DatabaseMysqlBase.php index 846da1c959..be34242bda 100644 --- a/includes/db/DatabaseMysqlBase.php +++ b/includes/db/DatabaseMysqlBase.php @@ -1055,6 +1055,10 @@ abstract class DatabaseMysqlBase extends DatabaseBase { ( $this->lastErrno() == 1290 && strpos( $this->lastError(), '--read-only' ) !== false ); } + function wasConnectionError( $errno ) { + return $errno == 2013 || $errno == 2006; + } + /** * Get the underlying binding handle, mConn *