Files
spigot-event-producer/design/user-stories/us-005-deliver-events-durably.md
T
dmg c76ea5b434
CI / build (push) Successful in 3m35s
Release / release (push) Successful in 4m6s
docs(design): add user story knowledge bundle
2026-08-08 12:31:15 -04:00

1.5 KiB

type, title, description, status
type title description status
User Story US-005: Deliver events durably Persist events locally and deliver ordered, bounded batches without blocking the Minecraft server thread. done

US-005: Deliver events durably

As a server operator, I want captured events buffered durably and retried after ingest failures so that temporary outages do not silently lose activity.

Acceptance criteria

  • Events are persisted in an ordered local SQLite outbox before delivery.
  • Persistence and HTTP delivery use dedicated workers rather than performing SQLite or network work on the Bukkit server thread.
  • Delivery uses newline-delimited JSON batches bounded by configured event and byte limits.
  • Delivery is requested periodically and may also be requested when an event-count or byte threshold is reached.
  • Events are acknowledged and removed only after the ingest endpoint returns HTTP 202 Accepted.
  • Failed deliveries remain in the outbox and are retried with bounded exponential backoff.
  • Stable event IDs provide at-least-once delivery semantics suitable for downstream deduplication.
  • Shutdown waits for the shutdown event to be persisted and drains pending persistence work before closing the outbox.