Add LBFactory::disableChronologyProtection method
authorAaron Schulz <aschulz@wikimedia.org>
Fri, 13 Nov 2015 00:07:50 +0000 (16:07 -0800)
committerAaron Schulz <aschulz@wikimedia.org>
Fri, 13 Nov 2015 00:09:25 +0000 (00:09 +0000)
This is useful for things like job running entry points by
avoiding pointless overhead.

Change-Id: I007273dd95e6a2e9d258d475d383bc869d63f7b1

includes/db/loadbalancer/LBFactory.php
includes/db/loadbalancer/LBFactoryMulti.php
includes/db/loadbalancer/LBFactorySimple.php

index 8d298e0..eeeca62 100644 (file)
@@ -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
         */
index 556fd30..e58aead 100644 (file)
@@ -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();
        }
 
        /**
index b9c6cd1..1c9e094 100644 (file)
@@ -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();
        }
 
        /**