/** @var string */
private $loadMonitorClass;
- /** @var int */
- private $maxLag;
-
- /** @var int Default 'maxLag' when unspecified */
- const MAX_LAG_DEFAULT = 10;
/**
* @see LBFactory::__construct()
$this->externalClusters = $conf['externalClusters'] ?? [];
$this->loadMonitorClass = $conf['loadMonitorClass'] ?? 'LoadMonitor';
- $this->maxLag = $conf['maxLag'] ?? self::MAX_LAG_DEFAULT;
}
- /**
- * @param bool|string $domain
- * @return LoadBalancer
- */
public function newMainLB( $domain = false ) {
return $this->newLoadBalancer( $this->servers );
}
- /**
- * @param bool|string $domain
- * @return LoadBalancer
- */
public function getMainLB( $domain = false ) {
- if ( !isset( $this->mainLB ) ) {
+ if ( !$this->mainLB ) {
$this->mainLB = $this->newMainLB( $domain );
}
$this->baseLoadBalancerParams(),
[
'servers' => $servers,
- 'maxLag' => $this->maxLag,
'loadMonitor' => [ 'class' => $this->loadMonitorClass ],
]
) );
return $lb;
}
- /**
- * Execute a function for each tracked load balancer
- * The callback is called with the load balancer as the first parameter,
- * and $params passed as the subsequent parameters.
- *
- * @param callable $callback
- * @param array $params
- */
public function forEachLB( $callback, array $params = [] ) {
if ( isset( $this->mainLB ) ) {
- call_user_func_array( $callback, array_merge( [ $this->mainLB ], $params ) );
+ $callback( $this->mainLB, ...$params );
}
foreach ( $this->extLBs as $lb ) {
- call_user_func_array( $callback, array_merge( [ $lb ], $params ) );
+ $callback( $lb, ...$params );
}
}
}