Skip to content

feat: allow opt-in auto-ack consumer streams - #80

Open
AmHonored wants to merge 2 commits into
futureq-io:mainfrom
AmHonored:feat/auto-ack
Open

AmHonored wants to merge 2 commits into
futureq-io:mainfrom
AmHonored:feat/auto-ack

Conversation

@AmHonored

@AmHonored AmHonored commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

Implements opt-in consumer auto-ack for #77. Workers request it with SubscribeInit.auto_ack; delivery.subscriptions.allowAutoAck defaults to false and rejects such streams with PermissionDenied before creating sessions. Accepting brokers confirm the mode in initial metadata.

After a successful stream send, the broker queues that recipient's completion through the existing batched ACK ledger. Failed sends remain pending, persistence failures retry, and other subscriptions retain their delivery obligations. Both manual ACK and NACK requests are ignored on auto-ack streams, including while sending is blocked. Manual streams keep their current behavior.

Includes YAML/environment configuration, API and delivery documentation, failed-send and persistence-retry tests, policy tests, and mixed manual/auto-ack delivery tests for Pebble and Bolt.

Validation:

  • Full go test ./... passes on Linux, including Raft cluster tests.
  • Targeted handler and configuration tests pass with -race on Windows.
  • The existing full Windows suite cannot run Raft filesystem syncing; Linux was used for that coverage.

Depends on futureq-io/protocol#2. Until that change is merged and released, go.mod explicitly replaces the protocol module with the immutable commit in AmHonored/protocol. Switch to the upstream release and remove the replacement after the protocol PR lands.

SDK implementation: futureq-io/sdk#3.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant