Adding multihost - locking

Adding Unit-Tests for it
This commit is contained in:
Philipp Holzer 2018-07-04 23:37:22 +02:00
parent b07dfbb03f
commit aac94d1d74
No known key found for this signature in database
GPG key ID: 58160D7D6AF942B6
22 changed files with 741 additions and 154 deletions

View file

@ -10,6 +10,7 @@ namespace Friendica\Core;
*/
use Friendica\Core\Cache\CacheDriverFactory;
use Friendica\Core\Cache\IMemoryCacheDriver;
/**
* @brief This class contain Functions for preventing parallel execution of functions
@ -29,17 +30,23 @@ class Lock
switch ($lock_driver) {
case 'memcache':
$cache_driver = CacheDriverFactory::create('memcache');
self::$driver = new Lock\CacheLockDriver($cache_driver);
if ($cache_driver instanceof IMemoryCacheDriver) {
self::$driver = new Lock\CacheLockDriver($cache_driver);
}
break;
case 'memcached':
$cache_driver = CacheDriverFactory::create('memcached');
self::$driver = new Lock\CacheLockDriver($cache_driver);
if ($cache_driver instanceof IMemoryCacheDriver) {
self::$driver = new Lock\CacheLockDriver($cache_driver);
}
break;
case 'redis':
$cache_driver = CacheDriverFactory::create('redis');
self::$driver = new Lock\CacheLockDriver($cache_driver);
if ($cache_driver instanceof IMemoryCacheDriver) {
self::$driver = new Lock\CacheLockDriver($cache_driver);
}
break;
case 'database':
@ -85,7 +92,9 @@ class Lock
if ($cache_driver != 'database') {
try {
$lock_driver = CacheDriverFactory::create($cache_driver);
self::$driver = new Lock\CacheLockDriver($lock_driver);
if ($lock_driver instanceof IMemoryCacheDriver) {
self::$driver = new Lock\CacheLockDriver($lock_driver);
}
return;
} catch (\Exception $exception) {
logger('Using Cache driver for locking failed: ' . $exception->getMessage());