mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-02 01:00:46 +00:00
The Runnable passed to runWhenWindEstimationInstalled(...) fires synchronously on whichever thread first invokes setWindEstimation with a non-null argument. That thread is typically a shared background-executor thread (the same pool used by SmartFutureCache and the wind estimator's GraphRecalculationTask). Running waitUntilDone, recalculate(...), and get(waitForLatest=true) on that thread makes the callback block waiting for tasks that need the same pool to progress, which starves the pool -- fatal with pool size 1, and observed as timeout retries on saturated pools in local runs. Detach the callback body onto a dedicated Thread so the setWindEstimation caller returns immediately and the shared pool stays free to service the tasks the retype-and-store step is waiting on.