* @ingroup Database
*/
abstract class LBFactory {
+ /** @var ChronologyProtector */
+ protected $chronProt;
+
/** @var LBFactory */
private static $instance;
if ( isset( $conf['readOnlyReason'] ) && is_string( $conf['readOnlyReason'] ) ) {
$this->readOnlyReason = $conf['readOnlyReason'];
}
+
+ $this->chronProt = $this->newChronologyProtector();
}
/**
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
*/
* @ingroup Database
*/
class LBFactoryMulti extends LBFactory {
- /** @var ChronologyProtector */
- private $chronProt;
-
/** @var array A map of database names to section names */
private $sectionsByDB;
$this->$key = $conf[$key];
}
}
-
- $this->chronProt = $this->newChronologyProtector();
}
/**
private $mainLB;
/** @var LoadBalancer[] */
private $extLBs = array();
- /** @var ChronologyProtector */
- private $chronProt;
/** @var string */
private $loadMonitorClass;
$this->loadMonitorClass = isset( $conf['loadMonitorClass'] )
? $conf['loadMonitorClass']
: null;
-
- $this->chronProt = $this->newChronologyProtector();
}
/**