Revert "Remove workaround for comparing database domain IDs."
authorAddshore <addshorewiki@gmail.com>
Tue, 30 Jan 2018 17:22:50 +0000 (17:22 +0000)
committerWMDE-leszek <leszek.manicki@wikimedia.de>
Tue, 30 Jan 2018 17:55:26 +0000 (17:55 +0000)
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
tests/phpunit/includes/Storage/RevisionStoreDbTest.php

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