fix: un dépôt est délivré une fois et retiré, comme en amont

This commit is contained in:
Sylvain Duchesne
2026-08-26 14:11:56 +02:00
parent abfb619c76
commit f6a48a4507
24 changed files with 1486 additions and 176 deletions
@@ -37,13 +37,18 @@ const running = new Map<Nuri, Promise<void>>();
* `inbox.watch` use — and it is NOT gated by the access-log flag: a diagnostic may be
* opt-in, a failure may not.
*
* One failed item denies nothing, here as at connection: the inbox is not consumed by
* failing, the deposit stays in it, and the next push or the next connection applies it.
* One failed item denies nothing, here as at connection. What it no longer promises is a
* RETRY: since 2026-08-26 a deposit is popped before its arm runs
* (`emulated-verifier/inbox-consume.ts`), so whatever had already been delivered when this
* drain fell over is gone, exactly as upstream loses a message the broker took out of the
* queue. What is still QUEUED is untouched and the next push or connection reaches it —
* which is a different sentence, and the wording says so rather than promising the old one.
*/
function reportFailure(inbox: Nuri, error: unknown): void {
console.error(
accessLogPrefix() + " could not apply what is in this inbox — its deposits stay in it " +
"and the next attempt will try again: " + shortNuri(inbox) + ":",
accessLogPrefix() + " could not finish draining this inbox — whatever it had already " +
"taken is consumed; what is still queued waits for the next attempt: " +
shortNuri(inbox) + ":",
error,
);
}