Blinkit's inventory replenishment pipeline froze silently — no errors, no crashes, just queries stuck indefinitely. The root cause was a deadlock in Trino's Hudi connector: producer threads filling a split buffer would block waiting for consumers to drain it, but consumers needed threads from the same shared pool that producers were holding. The fix replaced blocking with a cooperative yield pattern — producers hand the thread back to the pool and register a callback to resume when space opens, breaking the circular dependency. The bug was confirmed in Trino v455 and master, and a fix was contributed upstream.
Table of contents
Investigation: Resources Doing NothingArchitectureDiagnosis: The Deadlock CircleGet Ratul Dawar ’s stories in your inboxHudi connector getting stuck due to hudi-split-manager thread pool deadlock. · Issue #26967 ·…The Fix: Stop Blocking, Start YieldingResolution and Impactfix: Move hudi split loaders to resumable tasks architecture to prevent deadlocks by ratuldawar11 ·…Takeaways82 Impressions