lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

commit 2152d9bca992a1dbddeccc573f1b5b0f43e719ea
parent 0cd6ecd9be4fb9d72dc338c027c379bfbf0388b8
Author: triesap <tyson@radroots.org>
Date:   Tue,  7 Jul 2026 23:12:36 +0000

outbox: release signing claims on completion

Diffstat:
Mcrates/outbox/src/store.rs | 23++++-------------------
Mcrates/transport_nostr/tests/transport.rs | 30++++++++++--------------------
2 files changed, 14 insertions(+), 39 deletions(-)

diff --git a/crates/outbox/src/store.rs b/crates/outbox/src/store.rs @@ -601,7 +601,7 @@ impl RadrootsOutbox { } let signed_event_json = serde_json::to_string(&signed_event)?; let changed = sqlx::query( - "UPDATE outbox_event SET signed_event_json = ?, raw_event_json = ?, state = ?, last_error = NULL, updated_at_ms = ? WHERE outbox_event_id = ? AND claim_token = ?", + "UPDATE outbox_event SET signed_event_json = ?, raw_event_json = ?, state = ?, claim_token = NULL, claim_owner = NULL, claim_expires_at_ms = NULL, active_delivery_plan_id = NULL, last_error = NULL, updated_at_ms = ? WHERE outbox_event_id = ? AND claim_token = ?", ) .bind(signed_event_json.as_str()) .bind(signed_event.raw_json.as_str()) @@ -2982,7 +2982,7 @@ mod tests { .expect("event") .expect("event"); assert_eq!(event.state, RadrootsOutboxEventState::PreviewUnavailable); - assert_eq!(event.claim_token.as_deref(), Some("claim-a")); + assert_eq!(event.claim_token, None); let operation = outbox .get_operation(receipt.operation_id) .await @@ -2992,23 +2992,9 @@ mod tests { operation.status, RadrootsOutboxOperationStatus::PreviewUnavailable ); - assert_eq!( - outbox.recover_expired_claims(2_001).await.expect("recover"), - 1 - ); - let recovered_event = outbox - .get_event(receipt.outbox_event_id) - .await - .expect("event") - .expect("event"); - assert_eq!( - recovered_event.state, - RadrootsOutboxEventState::PreviewUnavailable - ); - assert_eq!(recovered_event.claim_token, None); assert!( outbox - .claim_next_ready_signed_event("publisher", "claim-b", 3_000, 2_100) + .claim_next_ready_signed_event("publisher", "claim-b", 3_000, 1_100) .await .expect("claim") .is_none() @@ -3244,9 +3230,8 @@ mod tests { ) .await .expect("complete signing"); - outbox.recover_expired_claims(2_001).await.expect("recover"); outbox - .claim_next_ready_event("publisher", "claim-b", 3_000, 2_100) + .claim_next_ready_event("publisher", "claim-b", 3_000, 1_100) .await .expect("claim") .expect("publish claim"); diff --git a/crates/transport_nostr/tests/transport.rs b/crates/transport_nostr/tests/transport.rs @@ -1304,9 +1304,8 @@ async fn outbox_publish_persists_partial_success_and_skips_accepted_retry() { .expect("claim") .expect("claim"); let signed = complete_claimed_signing(&outbox, &claimed, 1_100).await; - outbox.recover_expired_claims(2_001).await.expect("recover"); let publish_claim = outbox - .claim_next_ready_event("publisher", "publish-a", 3_000, 2_100) + .claim_next_ready_event("publisher", "publish-a", 3_000, 1_100) .await .expect("claim") .expect("publish claim"); @@ -1441,9 +1440,8 @@ async fn outbox_transport_publish_failure_releases_retryable_claim() { .expect("claim") .expect("claim"); complete_claimed_signing(&outbox, &claimed, 1_100).await; - outbox.recover_expired_claims(2_001).await.expect("recover"); let publish_claim = outbox - .claim_next_ready_event("publisher", "publish-a", 3_000, 2_100) + .claim_next_ready_event("publisher", "publish-a", 3_000, 1_100) .await .expect("claim") .expect("publish claim"); @@ -1534,9 +1532,8 @@ async fn outbox_publish_marks_published_without_adapter_when_all_relays_already_ .expect("claim") .expect("claim"); let signed = complete_claimed_signing(&outbox, &claimed, 1_100).await; - outbox.recover_expired_claims(2_001).await.expect("recover"); let publish_claim = outbox - .claim_next_ready_event("publisher", "publish-a", 3_000, 2_100) + .claim_next_ready_event("publisher", "publish-a", 3_000, 1_100) .await .expect("claim") .expect("publish claim"); @@ -1623,9 +1620,8 @@ async fn outbox_publish_ignores_unknown_adapter_receipts() { .expect("claim") .expect("claim"); let signed = complete_claimed_signing(&outbox, &claimed, 1_100).await; - outbox.recover_expired_claims(2_001).await.expect("recover"); let publish_claim = outbox - .claim_next_ready_event("publisher", "publish-a", 3_000, 2_100) + .claim_next_ready_event("publisher", "publish-a", 3_000, 1_100) .await .expect("claim") .expect("publish claim"); @@ -1698,9 +1694,8 @@ async fn outbox_publish_skips_non_nostr_targets() { .expect("claim") .expect("claim"); complete_claimed_signing(&outbox, &claimed, 1_100).await; - outbox.recover_expired_claims(2_001).await.expect("recover"); let publish_claim = outbox - .claim_next_ready_event("publisher", "publish-a", 3_000, 2_100) + .claim_next_ready_event("publisher", "publish-a", 3_000, 1_100) .await .expect("claim") .expect("publish claim"); @@ -1768,9 +1763,8 @@ async fn outbox_publish_marks_published_when_delivery_plan_satisfaction_is_met_w .expect("claim") .expect("claim"); let signed = complete_claimed_signing(&outbox, &claimed, 1_100).await; - outbox.recover_expired_claims(2_001).await.expect("recover"); let publish_claim = outbox - .claim_next_ready_event("publisher", "publish-a", 3_000, 2_100) + .claim_next_ready_event("publisher", "publish-a", 3_000, 1_100) .await .expect("claim") .expect("publish claim"); @@ -1869,9 +1863,8 @@ async fn outbox_publish_republishes_accepted_relays_when_policy_requests_it() { .expect("claim") .expect("claim"); let signed = complete_claimed_signing(&outbox, &claimed, 1_100).await; - outbox.recover_expired_claims(2_001).await.expect("recover"); let publish_claim = outbox - .claim_next_ready_event("publisher", "publish-a", 3_000, 2_100) + .claim_next_ready_event("publisher", "publish-a", 3_000, 1_100) .await .expect("claim") .expect("publish claim"); @@ -1953,9 +1946,8 @@ async fn outbox_publish_republish_policy_keeps_terminal_targets_excluded() { .expect("claim") .expect("claim"); complete_claimed_signing(&outbox, &claimed, 1_100).await; - outbox.recover_expired_claims(2_001).await.expect("recover"); let publish_claim = outbox - .claim_next_ready_event("publisher", "publish-a", 3_000, 2_100) + .claim_next_ready_event("publisher", "publish-a", 3_000, 1_100) .await .expect("claim") .expect("publish claim"); @@ -2081,9 +2073,8 @@ async fn outbox_publish_propagates_non_transport_adapter_errors_after_target_fil .expect("claim") .expect("claim"); complete_claimed_signing(&outbox, &claimed, 1_100).await; - outbox.recover_expired_claims(2_001).await.expect("recover"); let mut publish_claim = outbox - .claim_next_ready_event("publisher", "publish-a", 3_000, 2_100) + .claim_next_ready_event("publisher", "publish-a", 3_000, 1_100) .await .expect("claim") .expect("publish claim"); @@ -2139,9 +2130,8 @@ async fn outbox_publish_rejects_invalid_relay_target_uri_before_adapter_publish( .expect("claim") .expect("claim"); complete_claimed_signing(&outbox, &claimed, 1_100).await; - outbox.recover_expired_claims(2_001).await.expect("recover"); let publish_claim = outbox - .claim_next_ready_event("publisher", "publish-a", 3_000, 2_100) + .claim_next_ready_event("publisher", "publish-a", 3_000, 1_100) .await .expect("claim") .expect("publish claim");