From c5a751edbf86e1b0bd81a2409f222605db2968e7 Mon Sep 17 00:00:00 2001 From: Addshore Date: Tue, 30 Jan 2018 17:22:50 +0000 Subject: [PATCH] Revert "Remove workaround for comparing database domain IDs." This seems to have broken stuff, see failing tests on: https://gerrit.wikimedia.org/r/#/c/406302/ Could not insert main page: RevisionStore for cannot be used with a DB connection for jenkins_u0_mw This reverts commit d2a4d614fce09cdf9dfc137f8507b504e09c0ccc. Bug: T186017 Change-Id: Ic3de8e856d7d6b224b02816f2c5a1aa0648cd184 --- includes/Storage/RevisionStore.php | 18 +++++++++++++++++- .../includes/Storage/RevisionStoreDbTest.php | 8 +------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/includes/Storage/RevisionStore.php b/includes/Storage/RevisionStore.php index b6a751b4b8..79ecec691f 100644 --- a/includes/Storage/RevisionStore.php +++ b/includes/Storage/RevisionStore.php @@ -1484,13 +1484,29 @@ class RevisionStore implements IDBAccessObject, RevisionFactory, RevisionLookup * @throws MWException */ private function checkDatabaseWikiId( IDatabase $db ) { - $storeWiki = $this->loadBalancer->getLocalDomainID(); + $storeWiki = $this->wikiId; $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 d1b9157c3c..8185670206 100644 --- a/tests/phpunit/includes/Storage/RevisionStoreDbTest.php +++ b/tests/phpunit/includes/Storage/RevisionStoreDbTest.php @@ -22,7 +22,6 @@ 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; @@ -41,12 +40,7 @@ class RevisionStoreDbTest extends MediaWikiTestCase { private function getLoadBalancerMock( array $server ) { $lb = $this->getMockBuilder( LoadBalancer::class ) ->setMethods( [ 'reallyOpenConnection' ] ) - ->setConstructorArgs( [ [ - 'servers' => [ $server ], - 'localDomain' => new DatabaseDomain( - $server['dbname'], null, $server['tablePrefix'] - ), - ] ] ) + ->setConstructorArgs( [ [ 'servers' => [ $server ] ] ] ) ->getMock(); $lb->method( 'reallyOpenConnection' )->willReturnCallback( -- 2.20.1