function CombinedStore::save
Overrides PersistingStoreInterface::save
File
-
vendor/
symfony/ lock/ Store/ CombinedStore.php, line 49
Class
- CombinedStore
- CombinedStore is a PersistingStoreInterface implementation able to manage and synchronize several StoreInterfaces.
Namespace
Symfony\Component\Lock\StoreCode
public function save(Key $key) : void {
$successCount = 0;
$failureCount = 0;
$storesCount = \count($this->stores);
foreach ($this->stores as $store) {
try {
$store->save($key);
++$successCount;
} catch (\Exception $e) {
$this->logger?->debug('One store failed to save the "{resource}" lock.', [
'resource' => $key,
'store' => $store,
'exception' => $e,
]);
++$failureCount;
}
if (!$this->strategy
->canBeMet($failureCount, $storesCount)) {
break;
}
}
$this->checkNotExpired($key);
if ($this->strategy
->isMet($successCount, $storesCount)) {
return;
}
$this->logger?->info('Failed to store the "{resource}" lock. Quorum has not been met.', [
'resource' => $key,
'success' => $successCount,
'failure' => $failureCount,
]);
// clean up potential locks
$this->delete($key);
throw new LockConflictedException();
}