Files
bambuddy/backend
maziggy 92de15ab8e fix(backup): release the SQLite writer before the K-profile MQTT phase (#2656)
_apply ran archives and spools first, which autoflushes their INSERTs and so
    opens SQLite's single write transaction, then called _restore_kprofiles —
    which awaits get_kprofiles per printer per nozzle at timeout=5.0 with
    max_retries=3, i.e. up to ~15 s each against a printer that ignores the
    request. The commit only came afterwards, in run_restore. busy_timeout is 15 s
    (core/database.py:21), so a restore covering a couple of unresponsive printers
    held the writer past it and unrelated writes elsewhere in the app failed with
    "database is locked".

    Commit the database categories before the MQTT phase starts. The K-profile
    work is not in that transaction anyway — it leaves over MQTT — so the only
    thing lost is rolling those categories back when a K-profile send fails, and
    that rollback was never the right behaviour: extrusion_cali_set has already
    reached the printer by then, so undoing the database half would just make the
    two disagree.
2026-08-15 14:11:44 +02:00
..