From 4eaa6b94a60e069c94068c584adeed970448443f Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Wed, 28 Jun 2017 18:38:18 +0200 Subject: [PATCH 1/4] Hide semaphone warning https://github.com/friendica/friendica/issues/3553 --- src/Util/Lock.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Util/Lock.php b/src/Util/Lock.php index a50faf2d9..3988294b0 100644 --- a/src/Util/Lock.php +++ b/src/Util/Lock.php @@ -157,8 +157,7 @@ class Lock { */ public static function remove($fn_name) { if (function_exists('sem_get') && self::$semaphore[$fn_name]) { - sem_release(self::$semaphore[$fn_name]); - return; + return @sem_release(self::$semaphore[$fn_name]); } $memcache = self::connectMemcache(); From 329ab7d1533e2ae6f81249de036866fca6a2b964 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Wed, 28 Jun 2017 22:38:22 +0200 Subject: [PATCH 2/4] More general check for semaphore --- src/Util/Lock.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Util/Lock.php b/src/Util/Lock.php index 3988294b0..ca75b0d66 100644 --- a/src/Util/Lock.php +++ b/src/Util/Lock.php @@ -156,8 +156,14 @@ class Lock { * @param string $fn_name Name of the lock */ public static function remove($fn_name) { - if (function_exists('sem_get') && self::$semaphore[$fn_name]) { - return @sem_release(self::$semaphore[$fn_name]); + if (function_exists('sem_get')) { + if (empty(self::$semaphore[$fn_name])) { + return false; + } else { + $rid = self::$semaphore[$fn_name]; + self::$semaphore[$fn_name] = 0; + return @sem_release($rid); + } } $memcache = self::connectMemcache(); From 84972623f766a280a5b2901f3bac9dc9b0334a0b Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Fri, 7 Jul 2017 18:26:43 +0200 Subject: [PATCH 3/4] Order of semaphore processing --- src/Util/Lock.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Util/Lock.php b/src/Util/Lock.php index ca75b0d66..82d2fdda9 100644 --- a/src/Util/Lock.php +++ b/src/Util/Lock.php @@ -160,9 +160,9 @@ class Lock { if (empty(self::$semaphore[$fn_name])) { return false; } else { - $rid = self::$semaphore[$fn_name]; + $success = @sem_release(self::$semaphore[$fn_name]); self::$semaphore[$fn_name] = 0; - return @sem_release($rid); + return $success; } } From 080da4777d65f62a4f1a21fe7a23891454ee8e75 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Sat, 8 Jul 2017 11:03:41 +0200 Subject: [PATCH 4/4] Use unset after unlock https://github.com/friendica/friendica/pull/3554#issuecomment-313741392 --- src/Util/Lock.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Util/Lock.php b/src/Util/Lock.php index 82d2fdda9..754a45ed9 100644 --- a/src/Util/Lock.php +++ b/src/Util/Lock.php @@ -161,7 +161,7 @@ class Lock { return false; } else { $success = @sem_release(self::$semaphore[$fn_name]); - self::$semaphore[$fn_name] = 0; + unset(self::$semaphore[$fn_name]); return $success; } }