Avoid pointless DB_MASTER connections in User::clearSharedCache()
authorAaron Schulz <aschulz@wikimedia.org>
Fri, 9 Feb 2018 19:28:59 +0000 (11:28 -0800)
committerAaron Schulz <aschulz@wikimedia.org>
Fri, 9 Feb 2018 19:28:59 +0000 (11:28 -0800)
Change-Id: Ifc4f489cea4460185cb2d8317f174cabd67f5862

includes/user/User.php

index 97035c2..eeade49 100644 (file)
@@ -2509,12 +2509,17 @@ class User implements IDBAccessObject, UserIdentity {
                if ( $mode === 'refresh' ) {
                        $cache->delete( $key, 1 );
                } else {
-                       wfGetDB( DB_MASTER )->onTransactionPreCommitOrIdle(
-                               function () use ( $cache, $key ) {
-                                       $cache->delete( $key );
-                               },
-                               __METHOD__
-                       );
+                       $lb = MediaWikiServices::getInstance()->getDBLoadBalancer();
+                       if ( $lb->hasOrMadeRecentMasterChanges() ) {
+                               $lb->getConnection( DB_MASTER )->onTransactionPreCommitOrIdle(
+                                       function () use ( $cache, $key ) {
+                                               $cache->delete( $key );
+                                       },
+                                       __METHOD__
+                               );
+                       } else {
+                               $cache->delete( $key );
+                       }
                }
        }