52 $this->lbFactory = $lbFactory;
54 foreach ( $lockManagerConfigs as $config ) {
55 $config[
'domain'] = $this->domain;
56 if ( !isset( $config[
'name'] ) ) {
57 throw new Exception(
"Cannot register a lock manager with no name." );
59 $name = $config[
'name'];
60 if ( !isset( $config[
'class'] ) ) {
61 throw new Exception(
"Cannot register lock manager `{$name}` with no class." );
63 $class = $config[
'class'];
64 unset( $config[
'class'] );
65 $this->managers[$name] = [
79 public static function singleton( $domain =
false ) {
81 return MediaWikiServices::getInstance()->getLockManagerGroupFactory()
82 ->getLockManagerGroup(
$domain );
93 MediaWikiServices::getInstance()->resetServiceForTesting(
'LockManagerGroupFactory' );
103 public function get( $name ) {
104 if ( !isset( $this->managers[$name] ) ) {
105 throw new Exception(
"No lock manager defined with the name `$name`." );
108 if ( !isset( $this->managers[$name][
'instance'] ) ) {
109 $class = $this->managers[$name][
'class'];
110 '@phan-var string $class';
111 $config = $this->managers[$name][
'config'];
112 $config[
'logger'] = LoggerFactory::getInstance(
'LockManager' );
114 $this->managers[$name][
'instance'] =
new $class( $config );
117 return $this->managers[$name][
'instance'];
128 if ( !isset( $this->managers[$name] ) ) {
129 throw new Exception(
"No lock manager defined with the name `$name`." );
131 $class = $this->managers[$name][
'class'];
133 return [
'class' => $class ] + $this->managers[$name][
'config'];
147 return isset( $this->managers[
'default'] )
148 ? $this->
get(
'default' )
165 return isset( $this->managers[
'default'] )
166 ? $this->
get(
'default' )
167 : $this->
get(
'fsLockManager' );
wfDeprecated( $function, $version=false, $component=false, $callerOffset=2)
Logs a warning that a deprecated feature was used.
Class to handle file lock manager registration.
getDefault()
Get the default lock manager configured for the site.
string $domain
domain (usually wiki ID)
config( $name)
Get the config array for a lock manager object with a given name.
getAny()
Get the default lock manager configured for the site or at least some other effective configured lock...
static singleton( $domain=false)
static destroySingletons()
Destroy the singleton instances.
array $managers
Array of (name => ('class' => ..., 'config' => ..., 'instance' => ...))
__construct( $domain, array $lockManagerConfigs, LBFactory $lbFactory)
Do not call this directly.
Simple version of LockManager that only does lock reference counting.