/**
* @brief Releases a lock if it was set by us
*
- * @param string $key Name of the lock
+ * @param string $key Name of the lock
+ * @param bool $force Force the lock to get releases
* @return void
*/
- public static function release($key)
+ public static function release($key, $force = false)
{
- self::getDriver()->releaseLock($key);
+ self::getDriver()->releaseLock($key, $force);
}
/**
/**
* (@inheritdoc)
*/
- public function releaseLock($key)
+ public function releaseLock($key, $force = false)
{
$cachekey = self::getLockKey($key);
- $this->cache->compareDelete($cachekey, getmypid());
+ if ($force) {
+ $this->cache->delete($key);
+ } else {
+ $this->cache->compareDelete($cachekey, getmypid());
+ }
$this->markRelease($key);
}
/**
* (@inheritdoc)
*/
- public function releaseLock($key)
+ public function releaseLock($key, $force = false)
{
- DBA::delete('locks', ['name' => $key, 'pid' => $this->pid]);
+ if ($force) {
+ $where = ['name' => $key];
+ } else {
+ $where = ['name' => $key, 'pid' => $this->pid];
+ }
+
+ DBA::delete('locks', $where);
$this->markRelease($key);
/**
* Releases a lock if it was set by us
*
- * @param string $key The Name of the lock
+ * @param string $key The Name of the lock
+ * @param bool $force Force the lock to get released
*
* @return void
*/
- public function releaseLock($key);
+ public function releaseLock($key, $force = false);
/**
* Releases all lock that were set by us
/**
* (@inheritdoc)
*/
- public function releaseLock($key)
+ public function releaseLock($key, $force = false)
{
if (empty(self::$semaphore[$key])) {
return false;
// In force mode, we release the dbupdate lock first
// Necessary in case of an stuck update
if ($force) {
- Lock::release('dbupdate');
+ Lock::release('dbupdate', true);
}
$build = Config::get('system', 'build');