A sync could read the hub snapshot just before ApplyVpnPeer removed a peer and
purged its tombstone, then adopt what it had seen as a fresh enabled access —
restoring a revoked one. Both jobs now hold Cache::lock('wireguard:hub') around
read-decide-mutate, so a reconciliation can never straddle a removal. Retry
removals are dispatched after the lock is released, because the sync queue
driver runs them inline and they take the same lock.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| Admin | ||
| Auth | ||
| Provisioning | ||
| BillingTest.php | ||
| ComponentTest.php | ||
| DashboardTest.php | ||
| ExampleTest.php | ||
| ImpersonationTest.php | ||
| OperatorInPortalTest.php | ||
| PortalTabsTest.php | ||
| SeatsTest.php | ||
| SettingsTest.php | ||
| WelcomeTest.php | ||