From: Aaron Schulz Date: Fri, 2 Feb 2018 18:00:42 +0000 (-0800) Subject: rdbms: clean up and improve LoadBalancer logging calls X-Git-Tag: 1.31.0-rc.0~710 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=2b886995db4cd75134adb2ca70027e4a8c2ef83c rdbms: clean up and improve LoadBalancer logging calls Change-Id: I8a17ad36ccc770fbd101c4b280e8ad1b32837125 --- diff --git a/includes/libs/rdbms/loadbalancer/LoadBalancer.php b/includes/libs/rdbms/loadbalancer/LoadBalancer.php index 864e6f0a3c..1ba1a9796a 100644 --- a/includes/libs/rdbms/loadbalancer/LoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/LoadBalancer.php @@ -586,9 +586,11 @@ class LoadBalancer implements ILoadBalancer { $knownReachedPos instanceof DBMasterPos && $knownReachedPos->hasReached( $this->mWaitForPos ) ) { - $this->replLogger->debug( __METHOD__ . + $this->replLogger->debug( + __METHOD__ . ': replica DB {dbserver} known to be caught up (pos >= $knownReachedPos).', - [ 'dbserver' => $server ] ); + [ 'dbserver' => $server ] + ); return true; } @@ -596,15 +598,19 @@ class LoadBalancer implements ILoadBalancer { $conn = $this->getAnyOpenConnection( $index ); if ( !$conn ) { if ( !$open ) { - $this->replLogger->debug( __METHOD__ . ': no connection open for {dbserver}', - [ 'dbserver' => $server ] ); + $this->replLogger->debug( + __METHOD__ . ': no connection open for {dbserver}', + [ 'dbserver' => $server ] + ); return false; } else { $conn = $this->openConnection( $index, self::DOMAIN_ANY ); if ( !$conn ) { - $this->replLogger->warning( __METHOD__ . ': failed to connect to {dbserver}', - [ 'dbserver' => $server ] ); + $this->replLogger->warning( + __METHOD__ . ': failed to connect to {dbserver}', + [ 'dbserver' => $server ] + ); return false; } @@ -614,16 +620,33 @@ class LoadBalancer implements ILoadBalancer { } } - $this->replLogger->info( __METHOD__ . ': Waiting for replica DB {dbserver} to catch up...', - [ 'dbserver' => $server ] ); + $this->replLogger->info( + __METHOD__ . + ': Waiting for replica DB {dbserver} to catch up...', + [ 'dbserver' => $server ] + ); + $timeout = $timeout ?: $this->mWaitTimeout; $result = $conn->masterPosWait( $this->mWaitForPos, $timeout ); - if ( $result == -1 || is_null( $result ) ) { - // Timed out waiting for replica DB, use master instead + if ( $result === null ) { + $this->replLogger->warning( + __METHOD__ . ': Errored out waiting on {host} pos {pos}', + [ + 'host' => $server, + 'pos' => $this->mWaitForPos, + 'trace' => ( new RuntimeException() )->getTraceAsString() + ] + ); + $ok = false; + } elseif ( $result == -1 ) { $this->replLogger->warning( __METHOD__ . ': Timed out waiting on {host} pos {pos}', - [ 'host' => $server, 'pos' => $this->mWaitForPos ] + [ + 'host' => $server, + 'pos' => $this->mWaitForPos, + 'trace' => ( new RuntimeException() )->getTraceAsString() + ] ); $ok = false; } else { @@ -1645,8 +1668,11 @@ class LoadBalancer implements ILoadBalancer { $result = $conn->masterPosWait( $pos, $timeout ); if ( $result == -1 || is_null( $result ) ) { $msg = __METHOD__ . ': Timed out waiting on {host} pos {pos}'; - $this->replLogger->warning( $msg, - [ 'host' => $conn->getServer(), 'pos' => $pos ] ); + $this->replLogger->warning( $msg, [ + 'host' => $conn->getServer(), + 'pos' => $pos, + 'trace' => ( new RuntimeException() )->getTraceAsString() + ] ); $ok = false; } else { $this->replLogger->info( __METHOD__ . ': Done' ); @@ -1654,8 +1680,13 @@ class LoadBalancer implements ILoadBalancer { } } else { $ok = false; // something is misconfigured - $this->replLogger->error( 'Could not get master pos for {host}', - [ 'host' => $conn->getServer() ] ); + $this->replLogger->error( + __METHOD__ . ': could not get master pos for {host}', + [ + 'host' => $conn->getServer(), + 'trace' => ( new RuntimeException() )->getTraceAsString() + ] + ); } return $ok;