Report file writes run one at a time (closes #150)
check / check (push) Waiting to run

Two writes that failed at the same time put their reports back in the
wrong order when the older one failed first. A mutex is now held
across each write, from taking the waiting reports out of the buffer
to putting them back if the write fails, so the next write takes them
in order. The write Append starts at the 10 MiB threshold waits for
one under way, and Append starts no other while it waits. Files
written since the start are now deleted to make room in the order they
were written. A test that needed two writes at once is removed.

Model: opus-5-5
This commit is contained in:
2026-10-19 01:28:44 +00:00
parent be6dc93eaa
commit 397a47b529
4 changed files with 177 additions and 163 deletions
+11
View File
@@ -21,6 +21,17 @@ Run `make frontend-viewport-test` in CI as its own step; it is not part of
# Completed Steps
- 2026-10-19: report file writes no longer overlap
([#150](https://git.eeqj.de/sneak/netwatch/issues/150)), so the reports of
failed writes are written in the order they arrived. Two writes that failed at
the same time put their reports back in the wrong order when the older failed
first. One write runs at a time, and each takes the waiting reports only when
it starts, after a failed write has put its own back. The write that 10 MiB
waiting starts waits for one under way, and only one such write waits at a
time. A unit test holds a write open, starts a second at 10 MiB, fails both
and checks the order in the next file. Files written since the start are
deleted to make room in the order they were written, after those found at
start
- 2026-10-18: when the backend runs on its own, a `DATA_DIR` that cannot be
created or read, or where no file can be created, stops the start with an
error naming `DATA_DIR` and its value, as the other settings' errors do