From 1af6474a6ea3b77268f3af097894061286d61f80 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Thu, 12 Nov 2015 16:07:50 -0800 Subject: [PATCH] Add LBFactory::disableChronologyProtection method This is useful for things like job running entry points by avoiding pointless overhead. Change-Id: I007273dd95e6a2e9d258d475d383bc869d63f7b1 --- includes/db/loadbalancer/LBFactory.php | 16 ++++++++++++++++ includes/db/loadbalancer/LBFactoryMulti.php | 5 ----- includes/db/loadbalancer/LBFactorySimple.php | 4 ---- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/includes/db/loadbalancer/LBFactory.php b/includes/db/loadbalancer/LBFactory.php index 8d298e08c5..eeeca6283c 100644 --- a/includes/db/loadbalancer/LBFactory.php +++ b/includes/db/loadbalancer/LBFactory.php @@ -26,6 +26,9 @@ * @ingroup Database */ abstract class LBFactory { + /** @var ChronologyProtector */ + protected $chronProt; + /** @var LBFactory */ private static $instance; @@ -42,6 +45,8 @@ abstract class LBFactory { if ( isset( $conf['readOnlyReason'] ) && is_string( $conf['readOnlyReason'] ) ) { $this->readOnlyReason = $conf['readOnlyReason']; } + + $this->chronProt = $this->newChronologyProtector(); } /** @@ -258,6 +263,17 @@ abstract class LBFactory { return $ret; } + /** + * Disable the ChronologyProtector for all load balancers + * + * This can be called at the start of special API entry points + * + * @since 1.27 + */ + public function disableChronologyProtection() { + $this->chronProt->setEnabled( false ); + } + /** * @return ChronologyProtector */ diff --git a/includes/db/loadbalancer/LBFactoryMulti.php b/includes/db/loadbalancer/LBFactoryMulti.php index 556fd302d6..e58aead8e1 100644 --- a/includes/db/loadbalancer/LBFactoryMulti.php +++ b/includes/db/loadbalancer/LBFactoryMulti.php @@ -76,9 +76,6 @@ * @ingroup Database */ class LBFactoryMulti extends LBFactory { - /** @var ChronologyProtector */ - private $chronProt; - /** @var array A map of database names to section names */ private $sectionsByDB; @@ -180,8 +177,6 @@ class LBFactoryMulti extends LBFactory { $this->$key = $conf[$key]; } } - - $this->chronProt = $this->newChronologyProtector(); } /** diff --git a/includes/db/loadbalancer/LBFactorySimple.php b/includes/db/loadbalancer/LBFactorySimple.php index b9c6cd17ab..1c9e094469 100644 --- a/includes/db/loadbalancer/LBFactorySimple.php +++ b/includes/db/loadbalancer/LBFactorySimple.php @@ -29,8 +29,6 @@ class LBFactorySimple extends LBFactory { private $mainLB; /** @var LoadBalancer[] */ private $extLBs = array(); - /** @var ChronologyProtector */ - private $chronProt; /** @var string */ private $loadMonitorClass; @@ -41,8 +39,6 @@ class LBFactorySimple extends LBFactory { $this->loadMonitorClass = isset( $conf['loadMonitorClass'] ) ? $conf['loadMonitorClass'] : null; - - $this->chronProt = $this->newChronologyProtector(); } /** -- 2.20.1