From d2a4d614fce09cdf9dfc137f8507b504e09c0ccc Mon Sep 17 00:00:00 2001 From: daniel Date: Mon, 29 Jan 2018 19:43:11 -0800 Subject: [PATCH] Remove workaround for comparing database domain IDs. Change-Id: I240d68eddec871794ed98b7ce67773114ee73ff7 --- includes/Storage/RevisionStore.php | 18 +----------------- .../includes/Storage/RevisionStoreDbTest.php | 8 +++++++- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/includes/Storage/RevisionStore.php b/includes/Storage/RevisionStore.php index 79ecec691f..b6a751b4b8 100644 --- a/includes/Storage/RevisionStore.php +++ b/includes/Storage/RevisionStore.php @@ -1484,29 +1484,13 @@ class RevisionStore implements IDBAccessObject, RevisionFactory, RevisionLookup * @throws MWException */ private function checkDatabaseWikiId( IDatabase $db ) { - $storeWiki = $this->wikiId; + $storeWiki = $this->loadBalancer->getLocalDomainID(); $dbWiki = $db->getDomainID(); if ( $dbWiki === $storeWiki ) { return; } - // XXX: we really want the default database ID... - $storeWiki = $storeWiki ?: wfWikiID(); - $dbWiki = $dbWiki ?: wfWikiID(); - - if ( $dbWiki === $storeWiki ) { - return; - } - - // HACK: counteract encoding imposed by DatabaseDomain - $storeWiki = str_replace( '?h', '-', $storeWiki ); - $dbWiki = str_replace( '?h', '-', $dbWiki ); - - if ( $dbWiki === $storeWiki ) { - return; - } - throw new MWException( "RevisionStore for $storeWiki " . "cannot be used with a DB connection for $dbWiki" ); } diff --git a/tests/phpunit/includes/Storage/RevisionStoreDbTest.php b/tests/phpunit/includes/Storage/RevisionStoreDbTest.php index 8185670206..d1b9157c3c 100644 --- a/tests/phpunit/includes/Storage/RevisionStoreDbTest.php +++ b/tests/phpunit/includes/Storage/RevisionStoreDbTest.php @@ -22,6 +22,7 @@ use TestUserRegistry; use Title; use WANObjectCache; use Wikimedia\Rdbms\Database; +use Wikimedia\Rdbms\DatabaseDomain; use Wikimedia\Rdbms\DatabaseSqlite; use Wikimedia\Rdbms\FakeResultWrapper; use Wikimedia\Rdbms\LoadBalancer; @@ -40,7 +41,12 @@ class RevisionStoreDbTest extends MediaWikiTestCase { private function getLoadBalancerMock( array $server ) { $lb = $this->getMockBuilder( LoadBalancer::class ) ->setMethods( [ 'reallyOpenConnection' ] ) - ->setConstructorArgs( [ [ 'servers' => [ $server ] ] ] ) + ->setConstructorArgs( [ [ + 'servers' => [ $server ], + 'localDomain' => new DatabaseDomain( + $server['dbname'], null, $server['tablePrefix'] + ), + ] ] ) ->getMock(); $lb->method( 'reallyOpenConnection' )->willReturnCallback( -- 2.20.1