Drive the archive reopen debounce test from a clock (closes #190)
check / check (push) Successful in 4m16s

The archive writer now reads the time its reopen debounce is
measured on from a clock field, time.Now outside tests. The
debounce test moves that clock instead of sleeping past a real
2 second window, so a slow host between the two quick writes can
no longer turn a correct result red.

Model: opus-5-5
Šī revīzija ir iekļauta:
2026-10-02 12:18:54 +00:00
vecāks 8cf5acaf1d
revīzija d17a687dba
3 mainīti faili ar 24 papildinājumiem un 6 dzēšanām
@@ -194,6 +194,10 @@ type archiveWriter struct {
lastReopen time.Time
reopens int
// now is the clock the reopen debounce is measured on. It is
// time.Now outside tests.
now func() time.Time
// evicted marks a writer that has been removed from the
// registry. Its handle is closed and it must never open the
// file again: nothing holds it any more, so a reopen would
@@ -228,6 +232,7 @@ func newArchiveWriter(
path: path,
log: log,
debounce: archiveReopenDebounce,
now: time.Now,
}
}
@@ -263,7 +268,7 @@ func (w *archiveWriter) write(
)
}
if time.Since(w.lastReopen) >= w.debounce {
if w.now().Sub(w.lastReopen) >= w.debounce {
return w.reopen(expiry)
}
@@ -323,7 +328,7 @@ func (w *archiveWriter) openMode(
}
w.db = gdb
w.lastReopen = time.Now()
w.lastReopen = w.now()
w.reopens++
if expiry > 0 {