/org/current stops depending on a live Hibernate session

FixSecurityService
Shipped
August 25, 2026 at 9:46 PM UTC
Author
Kamo
Commit
acc2049

This endpoint is what the workspace shell loads before it renders, and the client refuses a record it cannot read — Organization.fromJSON throws without a domain — so this failing is a blank page rather than a missing field. It is the same endpoint behind the outage this work started with. It read org.domains lazily to answer that field. A query failing earlier in the same request takes the session with it, and every later lazy touch then throws LazyInitializationException instead of returning a domain. That happened in bursts on 2026-08-25, alongside transient Yugabyte "schema version mismatch" aborts during a wave of migrations. The trigger was transient; the fragility was not. Fetched with findByIdWithDomains now — one query, and the domains are in hand before anything else can go wrong. The projection's own fallback had the same defect and hid it better: features is lazy too, and the catch handler reached for org.getFeatures() again unguarded. So in exactly the case the fallback existed for — the collection being unreadable — it rethrew the failure it was written to absorb. It degrades to no features now, via featuresOrNone: a thin app list is recoverable on the next request, a page that will not render is not. Left alone: uploadLogo and commitBackgrounds read domains lazily too, but they are branding paths relying on the deliberate open-in-view: true, not the page load.

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