Start of bug 24853, killing off 'functional' parts of failfunction code. Seems when the constructors start getting changed, it starts borking. Using this as a point of reversion/stashing

This commit is contained in:
Sam Reed 2010-10-24 20:48:48 +00:00
parent 090e191b23
commit 16cded8b32
6 changed files with 6 additions and 53 deletions

View file

@ -235,14 +235,6 @@ abstract class DatabaseBase implements DatabaseType {
return $this->getServerVersion(); return $this->getServerVersion();
} }
/**
* Fail function, takes a Database as a parameter
* Set to false for default, 1 for ignore errors
*/
function failFunction( $function = null ) {
return wfSetVar( $this->mFailFunction, $function );
}
/** /**
* Boolean, controls output of large amounts of debug information * Boolean, controls output of large amounts of debug information
*/ */
@ -500,8 +492,6 @@ abstract class DatabaseBase implements DatabaseType {
if ( !isset( $wgOut ) ) { if ( !isset( $wgOut ) ) {
$wgOut = null; $wgOut = null;
} }
$this->mFailFunction = $failFunction;
$this->mFlags = $flags; $this->mFlags = $flags;
if ( $this->mFlags & DBO_DEFAULT ) { if ( $this->mFlags & DBO_DEFAULT ) {
@ -589,16 +579,8 @@ abstract class DatabaseBase implements DatabaseType {
$error = $myError; $error = $myError;
} }
if ( $this->mFailFunction ) { # New method
# Legacy error handling method throw new DBConnectionError( $this, $error );
if ( !is_int( $this->mFailFunction ) ) {
$ff = $this->mFailFunction;
$ff( $this, $error );
}
} else {
# New method
throw new DBConnectionError( $this, $error );
}
} }
/** /**

View file

@ -273,7 +273,6 @@ class DatabaseIbm_db2 extends DatabaseBase {
$wgOut = null; $wgOut = null;
} }
$this->mOut =& $wgOut; $this->mOut =& $wgOut;
$this->mFailFunction = $failFunction;
$this->mFlags = DBO_TRX | $flags; $this->mFlags = DBO_TRX | $flags;
if ( $schema == self::USE_GLOBAL ) { if ( $schema == self::USE_GLOBAL ) {

View file

@ -20,10 +20,8 @@ class DatabaseMssql extends DatabaseBase {
function __construct( $server = false, $user = false, $password = false, $dbName = false, function __construct( $server = false, $user = false, $password = false, $dbName = false,
$failFunction = false, $flags = 0 ) $failFunction = false, $flags = 0 )
{ {
$this->mFailFunction = $failFunction;
$this->mFlags = $flags; $this->mFlags = $flags;
$this->open( $server, $user, $password, $dbName ); $this->open( $server, $user, $password, $dbName );
} }
function cascadingDeletes() { function cascadingDeletes() {

View file

@ -103,7 +103,6 @@ class DatabasePostgres extends DatabaseBase {
function __construct( $server = false, $user = false, $password = false, $dbName = false, function __construct( $server = false, $user = false, $password = false, $dbName = false,
$failFunction = false, $flags = 0 ) $failFunction = false, $flags = 0 )
{ {
$this->mFailFunction = $failFunction;
$this->mFlags = $flags; $this->mFlags = $flags;
$this->open( $server, $user, $password, $dbName ); $this->open( $server, $user, $password, $dbName );
} }
@ -192,11 +191,7 @@ class DatabasePostgres extends DatabaseBase {
wfDebug( "DB connection error\n" ); wfDebug( "DB connection error\n" );
wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " . substr( $password, 0, 3 ) . "...\n" ); wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " . substr( $password, 0, 3 ) . "...\n" );
wfDebug( $this->lastError() . "\n" ); wfDebug( $this->lastError() . "\n" );
if ( !$this->mFailFunction ) { throw new DBConnectionError( $this, $phpError );
throw new DBConnectionError( $this, $phpError );
} else {
return false;
}
} }
$this->mOpened = true; $this->mOpened = true;

View file

@ -25,7 +25,6 @@ class DatabaseSqlite extends DatabaseBase {
*/ */
function __construct( $server = false, $user = false, $password = false, $dbName = false, $failFunction = false, $flags = 0 ) { function __construct( $server = false, $user = false, $password = false, $dbName = false, $failFunction = false, $flags = 0 ) {
global $wgSharedDB; global $wgSharedDB;
$this->mFailFunction = $failFunction;
$this->mFlags = $flags; $this->mFlags = $flags;
$this->mName = $dbName; $this->mName = $dbName;
@ -80,12 +79,7 @@ class DatabaseSqlite extends DatabaseBase {
} }
if ( !$this->mConn ) { if ( !$this->mConn ) {
wfDebug( "DB connection error: $err\n" ); wfDebug( "DB connection error: $err\n" );
if ( !$this->mFailFunction ) { throw new DBConnectionError( $this, $err );
throw new DBConnectionError( $this, $err );
} else {
return false;
}
} }
$this->mOpened = !!$this->mConn; $this->mOpened = !!$this->mConn;
# set error codes only, don't raise exceptions # set error codes only, don't raise exceptions

View file

@ -35,11 +35,6 @@ class LoadBalancer {
} }
$this->mServers = $params['servers']; $this->mServers = $params['servers'];
if ( isset( $params['failFunction'] ) ) {
$this->mFailFunction = $params['failFunction'];
} else {
$this->mFailFunction = false;
}
if ( isset( $params['waitTimeout'] ) ) { if ( isset( $params['waitTimeout'] ) ) {
$this->mWaitTimeout = $params['waitTimeout']; $this->mWaitTimeout = $params['waitTimeout'];
} else { } else {
@ -671,19 +666,9 @@ class LoadBalancer {
// No last connection, probably due to all servers being too busy // No last connection, probably due to all servers being too busy
wfLogDBError( "LB failure with no last connection\n" ); wfLogDBError( "LB failure with no last connection\n" );
$conn = new Database; $conn = new Database;
if ( $this->mFailFunction ) { // If all servers were busy, mLastError will contain something sensible
$conn->failFunction( $this->mFailFunction ); throw new DBConnectionError( $conn, $this->mLastError );
$conn->reportConnectionError( $this->mLastError );
} else {
// If all servers were busy, mLastError will contain something sensible
throw new DBConnectionError( $conn, $this->mLastError );
}
} else { } else {
if ( $this->mFailFunction ) {
$conn->failFunction( $this->mFailFunction );
} else {
$conn->failFunction( false );
}
$server = $conn->getProperty( 'mServer' ); $server = $conn->getProperty( 'mServer' );
wfLogDBError( "Connection error: {$this->mLastError} ({$server})\n" ); wfLogDBError( "Connection error: {$this->mLastError} ({$server})\n" );
$conn->reportConnectionError( "{$this->mLastError} ({$server})" ); $conn->reportConnectionError( "{$this->mLastError} ({$server})" );