From: Aaron Schulz Date: Wed, 10 Jul 2019 06:51:24 +0000 (-0700) Subject: rdbms: make IDatabase::isReadOnly() return true for replica DBs managed by LoadBalancer X-Git-Tag: 1.34.0-rc.0~1096^2 X-Git-Url: https://git.cyclocoop.org/%7B%24admin_url%7Dcompta/comptes/x?a=commitdiff_plain;h=da5f1240b0fdbdfea73764fb7248ea8279a4683a;p=lhc%2Fweb%2Fwiklou.git rdbms: make IDatabase::isReadOnly() return true for replica DBs managed by LoadBalancer Change-Id: I25b70fe0ea113c6741601cf0366a0fe9dc5cc3ef --- diff --git a/includes/libs/rdbms/database/Database.php b/includes/libs/rdbms/database/Database.php index e3c15fb35a..894a262306 100644 --- a/includes/libs/rdbms/database/Database.php +++ b/includes/libs/rdbms/database/Database.php @@ -4780,8 +4780,13 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware */ protected function getReadOnlyReason() { $reason = $this->getLBInfo( 'readOnlyReason' ); + if ( is_string( $reason ) ) { + return $reason; + } elseif ( $this->getLBInfo( 'replica' ) ) { + return "Server is configured in the role of a read-only replica database."; + } - return is_string( $reason ) ? $reason : false; + return false; } public function setTableAliases( array $aliases ) { diff --git a/tests/phpunit/includes/db/LoadBalancerTest.php b/tests/phpunit/includes/db/LoadBalancerTest.php index 0c0b82b595..f1bcd9898f 100644 --- a/tests/phpunit/includes/db/LoadBalancerTest.php +++ b/tests/phpunit/includes/db/LoadBalancerTest.php @@ -129,6 +129,7 @@ class LoadBalancerTest extends MediaWikiTestCase { $dbr = $lb->getConnection( DB_REPLICA ); $this->assertTrue( $dbr->getLBInfo( 'replica' ), 'replica shows as replica' ); + $this->assertTrue( $dbr->isReadOnly(), 'replica shows as replica' ); $this->assertEquals( ( $wgDBserver != '' ) ? $wgDBserver : 'localhost', $dbr->getLBInfo( 'clusterMasterHost' ),