Lock the shared sweeps, and run two pods

FeatureVOIPService
Shipped
September 4, 2026 at 8:51 PM UTC
Author
Kamo
Commit
beb9079

Every @Scheduled sweep here whose effect is shared now takes a named distributed lease through SingletonTaskRunner before it does anything, so it runs once across the fleet instead of once per pod. That was the only thing keeping this service at one replica — there is no ShedLock anywhere on this platform, so the replica count was what made the sweeps correct. @Transactional and friends stay on the OUTER method where present: Spring applies them with a proxy, and the inner method is reached through a this:: reference, which never goes through one. Moving them inward would leave the sweep silently non-transactional. replicas 1 -> 2, with a PodDisruptionBudget in KlusterServices so a node drain waits.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing