Project

General

Profile

Actions

Feature #88279

closed

Implement SemaphoreLockStrategy as LOCK_CAPABILITY_NOBLOCK by using $nowait parameter of sem_acquire()

Added by Leonie Philine almost 5 years ago. Updated over 4 years ago.

Status:
Rejected
Priority:
Should have
Assignee:
-
Category:
Locking / Session Handling
Target version:
-
Start date:
2019-05-06
Due date:
% Done:

0%

Estimated time:
PHP Version:
Tags:
Complexity:
Sprint Focus:

Description

Since PHP 5.6.1, sem_acquire() has a $nowait parameter to make it non-blocking. This parameter is not used in TYPO3.

-> The SemaphoreLockStrategy can be made support LOCK_CAPABILITY_NOBLOCK.

Note: php semaphores are not cluster-ready. A RedisLockStrategy is currently missing in the core and would be a great addition.

Actions #1

Updated by Markus Klein almost 5 years ago

  • Status changed from New to Needs Feedback

Thanks for your report.

Unfortunately this is only half of the truth.
The noWait option is not implemented like it is usually on system level. Setting it to true will cause the function to return false if the lock couldn't be acquired.
Unfortunately there seems to be no way to distinguish between a failed locking attempt (system related) or because it would block.

This is the reason why I didn't implement the noWait feature into the core's API.
Other means of locking allow to distinguish properly between "WOULD BLOCK" and an error.

Actions #2

Updated by Christian Eßl over 4 years ago

  • Category set to Locking / Session Handling
Actions #3

Updated by Markus Klein over 4 years ago

  • Status changed from Needs Feedback to Rejected
Actions

Also available in: Atom PDF