Make ExternalStoreDB "wiki" context override the server "dbname" field
authorAaron Schulz <aschulz@wikimedia.org>
Wed, 15 Aug 2018 01:44:40 +0000 (18:44 -0700)
committerKrinkle <krinklemail@gmail.com>
Wed, 15 Aug 2018 03:02:56 +0000 (03:02 +0000)
This is all that is needed for b/c and going beyond that can break
foreign wiki (domain) external store access if matching per-wiki DB
names *are* used for external store.

Follow up to 92e4ace7eae61.

Bug: T200471
Change-Id: I877139ff659f542da04d4d8f5ef3297dbfcfd734

includes/externalstore/ExternalStoreDB.php

index 5a77e89..75f7ccd 100644 (file)
@@ -166,6 +166,10 @@ class ExternalStoreDB extends ExternalStoreMedium {
         * @return string|bool Database domain ID or false
         */
        private function getDomainId( array $server ) {
+               if ( isset( $this->params['wiki'] ) ) {
+                       return $this->params['wiki']; // explicit domain
+               }
+
                if ( isset( $server['dbname'] ) ) {
                        // T200471: for b/c, treat any "dbname" field as forcing which database to use.
                        // MediaWiki/LoadBalancer previously did not enforce any concept of a local DB
@@ -181,7 +185,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
                        return $domain->getId();
                }
 
-               return $this->params['wiki'] ?? false; // local domain unless explictly given
+               return false; // local LB domain
        }
 
        /**