From: Aaron Schulz Date: Mon, 12 Sep 2016 23:46:02 +0000 (-0700) Subject: Make LBFactory::waitForReplication() mask wait latency with callbacks X-Git-Tag: 1.31.0-rc.0~5633^2 X-Git-Url: https://git.cyclocoop.org/%7B%7B%20url_for%28?a=commitdiff_plain;h=36d54d95e3606be4222558d1d29e60637036bece;p=lhc%2Fweb%2Fwiklou.git Make LBFactory::waitForReplication() mask wait latency with callbacks This simply moves the call order down a bit. Change-Id: I78559f769133d5addb590a65af7d535604de8407 --- diff --git a/includes/db/loadbalancer/LBFactory.php b/includes/db/loadbalancer/LBFactory.php index cd8dff32a1..4758cc77a1 100644 --- a/includes/db/loadbalancer/LBFactory.php +++ b/includes/db/loadbalancer/LBFactory.php @@ -430,10 +430,6 @@ abstract class LBFactory implements DestructibleService { 'ifWritesSince' => null ]; - foreach ( $this->replicationWaitCallbacks as $callback ) { - $callback(); - } - // Figure out which clusters need to be checked /** @var LoadBalancer[] $lbs */ $lbs = []; @@ -467,6 +463,12 @@ abstract class LBFactory implements DestructibleService { $masterPositions[$i] = $lb->getMasterPos(); } + // Run any listener callbacks *after* getting the DB positions. The more + // time spent in the callbacks, the less time is spent in waitForAll(). + foreach ( $this->replicationWaitCallbacks as $callback ) { + $callback(); + } + $failed = []; foreach ( $lbs as $i => $lb ) { if ( $masterPositions[$i] ) {