|
|
|
@ -519,14 +519,17 @@ class Server extends ServerContainer implements IServerContainer {
|
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
$this->registerService('LockingProvider', function (Server $c) {
|
|
|
|
|
if ($c->getConfig()->getSystemValue('filelocking.enabled', true) or (defined('PHPUNIT_RUN') && PHPUNIT_RUN)) {
|
|
|
|
|
$ini = $c->getIniWrapper();
|
|
|
|
|
$config = $c->getConfig();
|
|
|
|
|
$ttl = $config->getSystemValue('filelocking.ttl', max(3600, $ini->getNumeric('max_execution_time')));
|
|
|
|
|
if ($config->getSystemValue('filelocking.enabled', true) or (defined('PHPUNIT_RUN') && PHPUNIT_RUN)) {
|
|
|
|
|
/** @var \OC\Memcache\Factory $memcacheFactory */
|
|
|
|
|
$memcacheFactory = $c->getMemCacheFactory();
|
|
|
|
|
$memcache = $memcacheFactory->createLocking('lock');
|
|
|
|
|
if (!($memcache instanceof \OC\Memcache\NullCache)) {
|
|
|
|
|
return new MemcacheLockingProvider($memcache);
|
|
|
|
|
return new MemcacheLockingProvider($memcache, $ttl);
|
|
|
|
|
}
|
|
|
|
|
return new DBLockingProvider($c->getDatabaseConnection(), $c->getLogger(), new TimeFactory());
|
|
|
|
|
return new DBLockingProvider($c->getDatabaseConnection(), $c->getLogger(), new TimeFactory(), $ttl);
|
|
|
|
|
}
|
|
|
|
|
return new NoopLockingProvider();
|
|
|
|
|
});
|
|
|
|
|