From: Philipp Holzer Date: Thu, 6 Sep 2018 06:11:18 +0000 (+0200) Subject: LockDriverFixings X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=bd2b3b1ef5e066f927bf8ae95954dd4569319bca;p=friendica.git LockDriverFixings - release Locks in case of failures - adding some cache tests --- diff --git a/src/Core/Cache/ArrayCache.php b/src/Core/Cache/ArrayCache.php index b198287148..d1302c1d6e 100644 --- a/src/Core/Cache/ArrayCache.php +++ b/src/Core/Cache/ArrayCache.php @@ -53,6 +53,11 @@ class ArrayCache extends AbstractCacheDriver implements IMemoryCacheDriver */ public function clear($outdated = true) { + // Array doesn't support TTL so just don't delete something + if ($outdated) { + return true; + } + $this->cachedData = []; return true; } diff --git a/src/Core/Worker.php b/src/Core/Worker.php index 9dd973728d..3400f00ae1 100644 --- a/src/Core/Worker.php +++ b/src/Core/Worker.php @@ -117,12 +117,14 @@ class Worker // Count active workers and compare them with a maximum value that depends on the load if (self::tooMuchWorkers()) { logger('Active worker limit reached, quitting.', LOGGER_DEBUG); + Lock::release('worker'); return; } // Check free memory if ($a->min_memory_reached()) { logger('Memory limit reached, quitting.', LOGGER_DEBUG); + Lock::release('worker'); return; } Lock::release('worker'); diff --git a/src/Model/Item.php b/src/Model/Item.php index d235f0a7f9..10c705a995 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1936,6 +1936,7 @@ class Item extends BaseObject } else { // This shouldn't happen. logger('Could not insert activity for URI ' . $item['uri'] . ' - should not happen'); + Lock::release('item_insert_activity'); return false; } if ($locked) { diff --git a/tests/src/Core/Cache/CacheTest.php b/tests/src/Core/Cache/CacheTest.php index 105142f0b7..5c56c2072f 100644 --- a/tests/src/Core/Cache/CacheTest.php +++ b/tests/src/Core/Cache/CacheTest.php @@ -81,18 +81,32 @@ abstract class CacheTest extends DatabaseTest '3_value1' => $this->instance->get('3_value1'), ]); + $this->assertTrue($this->instance->clear()); + + $this->assertEquals([ + '1_value1' => 'ipsum lorum1', + '1_value2' => 'ipsum lorum2', + '2_value1' => 'ipsum lorum3', + '3_value1' => 'ipsum lorum4', + ], [ + '1_value1' => $this->instance->get('1_value1'), + '1_value2' => $this->instance->get('1_value2'), + '2_value1' => $this->instance->get('2_value1'), + '3_value1' => $this->instance->get('3_value1'), + ]); + $this->assertTrue($this->instance->clear(false)); $this->assertEquals([ '1_value1' => null, '1_value2' => null, - '2_value1' => null, - '3_value1' => null, + '2_value3' => null, + '3_value4' => null, ], [ '1_value1' => $this->instance->get('1_value1'), '1_value2' => $this->instance->get('1_value2'), - '2_value1' => $this->instance->get('2_value1'), - '3_value1' => $this->instance->get('3_value1'), + '2_value3' => $this->instance->get('2_value3'), + '3_value4' => $this->instance->get('3_value4'), ]); }