From 51be75ba00c7f228e88485db5b7de39b57f66c3f Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Thu, 6 Aug 2015 15:09:54 -0700 Subject: [PATCH] Avoid update.php suggestion on DB connection errors Bug: T98788 Change-Id: I21974d6b775f13c33055f76c30142e937eb0e965 --- includes/db/Database.php | 11 +++++++++++ includes/db/DatabaseError.php | 19 +++++++++++++------ includes/db/DatabaseMysqlBase.php | 4 ++++ 3 files changed, 28 insertions(+), 6 deletions(-) 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 * -- 2.20.1