Aaron Schulz has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/301910

Change subject: Unbreak "localDBMaster" mode in MySqlLockManager by using a 
separate connection
......................................................................

Unbreak "localDBMaster" mode in MySqlLockManager by using a separate connection

Change-Id: I4f9328e1555d814e0849cea86aca20896c6dfacf
---
M includes/filebackend/lockmanager/DBLockManager.php
1 file changed, 13 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/10/301910/1

diff --git a/includes/filebackend/lockmanager/DBLockManager.php 
b/includes/filebackend/lockmanager/DBLockManager.php
index e5ded45..b61b08d 100644
--- a/includes/filebackend/lockmanager/DBLockManager.php
+++ b/includes/filebackend/lockmanager/DBLockManager.php
@@ -150,8 +150,7 @@
                if ( !isset( $this->conns[$lockDb] ) ) {
                        $db = null;
                        if ( $lockDb === 'localDBMaster' ) {
-                               $lb = wfGetLBFactory()->getMainLB( 
$this->domain );
-                               $db = $lb->getConnection( DB_MASTER, [], 
$this->domain );
+                               $db = $this->getLocalLB()->getConnection( 
DB_MASTER, [], $this->domain );
                        } elseif ( isset( $this->dbServers[$lockDb] ) ) {
                                $config = $this->dbServers[$lockDb];
                                $db = DatabaseBase::factory( $config['type'], 
$config );
@@ -176,6 +175,13 @@
                }
 
                return $this->conns[$lockDb];
+       }
+
+       /**
+        * @return LoadBalancer
+        */
+       protected function getLocalLB() {
+               return wfGetLBFactory()->getMainLB( $this->domain );
        }
 
        /**
@@ -249,10 +255,11 @@
                self::LOCK_EX => self::LOCK_EX
        ];
 
-       /**
-        * @param string $lockDb
-        * @param IDatabase $db
-        */
+       protected function getLocalLB() {
+               // Use a separate connection so releaseAllLocks() doesn't 
rollback the main trx
+               return wfGetLBFactory()->newMainLB( $this->domain );
+       }
+
        protected function initConnection( $lockDb, IDatabase $db ) {
                # Let this transaction see lock rows from other transactions
                $db->query( "SET SESSION TRANSACTION ISOLATION LEVEL READ 
UNCOMMITTED;" );

-- 
To view, visit https://gerrit.wikimedia.org/r/301910
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4f9328e1555d814e0849cea86aca20896c6dfacf
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Aaron Schulz <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to