* @return bool
*/
protected function doWait( $index, $open = false, $timeout = null ) {
- # Find a connection to wait on
+ $close = false; // close the connection afterwards
+
+ # Find a connection to wait on, creating one if needed and allowed
$conn = $this->getAnyOpenConnection( $index );
if ( !$conn ) {
if ( !$open ) {
return false;
}
+ // Avoid connection spam in waitForAll() when connections
+ // are made just for the sake of doing this lag check.
+ $close = true;
}
}
if ( $result == -1 || is_null( $result ) ) {
# Timed out waiting for slave, use master instead
wfDebug( __METHOD__ . ": Timed out waiting for slave #$index pos {$this->mWaitForPos}\n" );
-
- return false;
+ $ok = false;
} else {
wfDebug( __METHOD__ . ": Done\n" );
+ $ok = true;
+ }
- return true;
+ if ( $close ) {
+ $this->closeConnection( $conn );
}
+
+ return $ok;
}
/**