Scheduler: poll thread dies silently on transport error; timed-out one-off runs late #8
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
From the review.
obdcore/scheduler.py:tick()kills the polling thread but leaves_running=True; the GUI keeps showing "Connected" with frozen data, and blockedrun_oneoffcallers hang the full timeout. Fix: wrap_loopin try/except -> set_running=False, fail pending one-offs with the real error, call anon_errorcallback; controller sets disconnected + closes link.run_oneoffthat times out leaves the job queued, so it executes LATER on the shared link — a ghost/duplicate vehicle command (e.g. a clear-codes or action firing unexpectedly). Fix: cancel-on-timeout via a per-job flag test-and-set under lock in_drain_oneoffs/run_oneoff.