N°9319 increase php min. version to 8.2 (#887)

* Update minimum PHP version to 8.2
* Fix previous wrong resolution of merge conflict
This commit is contained in:
jf-cbd
2026-04-20 14:47:44 +02:00
committed by GitHub
parent f439490bfc
commit 805087a01b
171 changed files with 5629 additions and 1446 deletions

View File

@@ -65,12 +65,14 @@ final class LockRegistry
/**
* Defines a set of existing files that will be used as keys to acquire locks.
*
* @return array The previously defined set of files
* @param list<string> $files A list of existing files
*
* @return list<string> The previously defined set of files
*/
public static function setFiles(array $files): array
{
$previousFiles = self::$files;
self::$files = $files;
self::$files = array_values($files);
foreach (self::$openedFiles as $file) {
if ($file) {
@@ -97,7 +99,7 @@ final class LockRegistry
}
self::$signalingException ??= unserialize("O:9:\"Exception\":1:{s:16:\"\0Exception\0trace\";a:0:{}}");
self::$signalingCallback ??= fn () => throw self::$signalingException;
self::$signalingCallback ??= static fn () => throw self::$signalingException;
while (true) {
try {
@@ -123,14 +125,33 @@ final class LockRegistry
}
// if we failed the race, retry locking in blocking mode to wait for the winner
$logger?->info('Item "{key}" is locked, waiting for it to be released', ['key' => $item->getKey()]);
flock($lock, \LOCK_SH);
$deadline = microtime(true) + 30.0;
$acquired = false;
do {
if ($acquired = flock($lock, \LOCK_SH | \LOCK_NB)) {
break;
}
usleep(100_000);
} while (microtime(true) < $deadline);
if (!$acquired) {
$logger?->warning('Lock on item "{key}" timed out, evicting slot', ['key' => $item->getKey()]);
unset(self::$files[$key]);
self::setFiles(self::$files);
$lock = null;
return self::compute($callback, $item, $save, $pool, $setMetadata, $logger, $beta);
}
if (\INF === $beta) {
$logger?->info('Force-recomputing item "{key}"', ['key' => $item->getKey()]);
continue;
}
} finally {
flock($lock, \LOCK_UN);
if ($lock) {
flock($lock, \LOCK_UN);
}
unset(self::$lockedFiles[$key]);
}