Skip to content

v3.14.3 – Fix persistent unavailable state

Choose a tag to compare

@FX6W9WZK FX6W9WZK released this 18 Mar 13:30

Critical Fix

All Audac entities stuck as unavailable despite devices being reachable.

Root cause

COMMAND_TIMEOUT (single TCP command) was 25 seconds. When the TCP connection hangs, one command holds the async lock for 25s — blocking ALL subsequent commands. With GET_ALL_ZONES_TIMEOUT also at 25s, the overall poll times out before the stuck command even releases the lock.

Result: Both coordinators (MTX + XMP44) cascade into permanent timeout loops.

Fix

Timeout Before (broken) After (fixed) Purpose
COMMAND_TIMEOUT 25s 5s Single command — fail fast on hung connections
GET_ALL_ZONES_TIMEOUT 25s 45s MTX all 8 zones — allow individual retries
GET_ALL_SLOTS_TIMEOUT 45s 45s XMP44 all 4 slots (unchanged)
UPDATE_TIMEOUT 35s 55s Coordinator cycle — must exceed inner timeouts

Why this works

A hung command now fails in 5s instead of 25s, freeing the lock immediately. The next command can proceed. Even if 2-3 commands fail, the overall 45s timeout has plenty of room for the remaining zones to complete normally.