feat: message ack with atomic cleanup (story 1.8)#8
Closed
vieiralucas wants to merge 0 commit intofeat/1-7-consumer-lease-message-deliveryfrom
Closed
feat: message ack with atomic cleanup (story 1.8)#8vieiralucas wants to merge 0 commit intofeat/1-7-consumer-lease-message-deliveryfrom
vieiralucas wants to merge 0 commit intofeat/1-7-consumer-lease-message-deliveryfrom
Conversation
c7ceec9 to
3f41912
Compare
f13c613 to
1e1eb19
Compare
3f41912 to
c56d405
Compare
1e1eb19 to
73640dd
Compare
c56d405 to
75dd9e7
Compare
73640dd to
1b962e3
Compare
75dd9e7 to
df92fa9
Compare
1b962e3 to
4b74411
Compare
df92fa9 to
4222fdc
Compare
9dd102a to
e695dd0
Compare
5841b6c to
6d915b3
Compare
e695dd0 to
7ccb2f4
Compare
6d915b3 to
b8e0d37
Compare
7ccb2f4 to
7537a50
Compare
b8e0d37 to
f66134b
Compare
7537a50 to
d794ecd
Compare
f66134b to
0b01ecd
Compare
d794ecd to
6918a46
Compare
0b01ecd to
03f341c
Compare
6918a46 to
ac33d31
Compare
03f341c to
942a6e7
Compare
7020540 to
7a90273
Compare
c17df24 to
aa08438
Compare
7a90273 to
69e45f6
Compare
69e45f6 to
3d21a80
Compare
This was referenced Feb 12, 2026
vieiralucas
added a commit
that referenced
this pull request
Mar 18, 2026
- apply_to_broker_storage now returns Result and propagates StorageError instead of silently swallowing storage failures (cubic #1) - add DeleteLeaseExpiry mutation in ack/nack replication paths to clean up orphaned lease expiry entries (cubic #3) - fix no-op leased_msg_keys.retain in recovery — now properly clears entries for the recovering queue before rebuild (cubic #4) - warn when create_group is called without broker_storage set (cubic #5) - check send_command result in watch_leader_changes — only update leading state on success so next poll retries on failure (cubic #6, #7) - trigger RecoverQueue on first-sight leader state to catch messages replicated between startup and first poll (cubic #8) - replace catch-all _ => {} with explicit variant listing in apply_to_broker_storage for compiler-enforced exhaustiveness
vieiralucas
added a commit
that referenced
this pull request
Mar 18, 2026
- apply_to_broker_storage now returns Result and propagates StorageError instead of silently swallowing storage failures (cubic #1) - add DeleteLeaseExpiry mutation in ack/nack replication paths to clean up orphaned lease expiry entries (cubic #3) - fix no-op leased_msg_keys.retain in recovery — now properly clears entries for the recovering queue before rebuild (cubic #4) - warn when create_group is called without broker_storage set (cubic #5) - check send_command result in watch_leader_changes — only update leading state on success so next poll retries on failure (cubic #6, #7) - trigger RecoverQueue on first-sight leader state to catch messages replicated between startup and first poll (cubic #8) - replace catch-all _ => {} with explicit variant listing in apply_to_broker_storage for compiler-enforced exhaustiveness
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
handle_ackin scheduler: validates lease exists, parses expiry from lease value, finds message key by scanning messages CF, atomically deletes message + lease + lease_expiry viaWriteBatchAckgRPC RPC with UUID parsing and input validationparse_expiry_from_lease_value()to keys moduleNOT_FOUND(idempotent)Test plan
MessageNotFoundMessageNotFoundon second call (idempotent)Summary by cubic
Implements end-to-end message acknowledgment for Story 1.8. On ack, the scheduler atomically deletes the message, lease, and lease expiry; unknown, double-acked, or missing messages/queues return NOT_FOUND.
New Features
Bug Fixes
Written for commit 3d21a80. Summary will update on new commits.