Skip to content

fix(idempotency): retain cache locks without execution deadlines - #5680

Merged
dreamorosi merged 2 commits into
mainfrom
fix/idempotency-cache-missing-deadline
Sep 9, 2026
Merged

dreamorosi merged 2 commits into
mainfrom
fix/idempotency-cache-missing-deadline

Conversation

@svozza

@svozza svozza commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Redis/Valkey idempotency records without an execution deadline are currently treated as orphaned, allowing overlapping calls to execute the same operation. Keep these records locked until their overall expiry when no Lambda context has been registered.

Changes

  • Reject acquisition of unexpired INPROGRESS records with no execution deadline.
  • Add a regression that fails before the fix and verify recovery still works for elapsed and zero execution deadlines.
  • Clarify how missing execution deadlines interact with overall record expiry.

Validation: 139 idempotency unit tests passed with 100% coverage, and TypeScript and changed-file lint checks passed. All four live Redis 7.4.11 cases passed after the fix, including overlapping wrapper calls with and without a Lambda context.

Issue number: closes #5678


By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.

@dreamorosi
dreamorosi merged commit 504e1cd into main Sep 9, 2026
41 checks passed
@dreamorosi
dreamorosi deleted the fix/idempotency-cache-missing-deadline branch September 9, 2026 14:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/M PR between 30-99 LOC

2 participants