Files
OpsLog/internal
rouggy bd9e091e65 fix: serialise auto-uploads so a burst doesn't 403 and leave QSOs at R
A QSO logged via UDP / ADIF-import fired `go m.upload` per QSO, so a pileup or
an ADIF-import burst hit a service with dozens of concurrent requests at once.
Club Log's nginx answers that burst with 403; the upload counts as failed and
the QSO stays at "R" while a lucky few go through — the real cause behind the
"it's uploaded but shows R" report (not the earlier display race).

Route all immediate/delayed auto-uploads through a single serialised worker
(one at a time, 250ms apart) so no burst ever trips a per-IP rate limiter.
upload() now reports whether a failure is transient (HTTP/rate-limit) vs
permanent (not eligible, wrong station callsign, no record); transient ones
are retried with exponential back-off (up to 4 attempts, 1s/2s/4s), so a QSO
that hit a momentary 403 ends up marked instead of stuck at R. A full queue
falls back to a goroutine rather than dropping an upload.
2026-07-19 03:05:02 +02:00
..
2026-07-03 19:08:50 +02:00
up
2026-06-14 01:35:40 +02:00
2026-07-04 11:39:33 +02:00
up
2026-06-13 19:14:24 +02:00
up
2026-06-14 00:55:27 +02:00
up
2026-06-15 23:45:14 +02:00
2026-06-07 01:11:37 +02:00
up
2026-06-15 23:45:14 +02:00
up
2026-06-10 20:27:44 +02:00
2026-06-11 21:54:35 +02:00
up
2026-06-15 23:45:14 +02:00
2026-07-09 17:32:13 +02:00
up
2026-06-13 16:17:58 +02:00