Remove workaround for comparing database domain IDs.
authordaniel <daniel.kinzler@wikimedia.de>
Tue, 30 Jan 2018 03:43:11 +0000 (19:43 -0800)
committerdaniel <daniel.kinzler@wikimedia.de>
Tue, 30 Jan 2018 03:44:46 +0000 (19:44 -0800)
Change-Id: I240d68eddec871794ed98b7ce67773114ee73ff7

includes/Storage/RevisionStore.php
tests/phpunit/includes/Storage/RevisionStoreDbTest.php

index 79ecec6..b6a751b 100644 (file)
@@ -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" );
        }
index 8185670..d1b9157 100644 (file)
@@ -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(