Skip to content

feat: add idempotency middleware and extract reusable ResponseBuffer#91

Merged
alexferl merged 3 commits intomasterfrom
idempotency
Mar 13, 2026
Merged

feat: add idempotency middleware and extract reusable ResponseBuffer#91
alexferl merged 3 commits intomasterfrom
idempotency

Conversation

@alexferl
Copy link
Copy Markdown
Owner

  • Add idempotency middleware with configurable IdempotencyStore interface
  • Extract ResponseBuffer to internal/rwutil for shared use by cache/etag/idempotency
  • Optimize cache key generation: SHA-256 → strings.Builder with Grow (78% faster)
  • Update JWT TokenStore interface for consistency

  - Add idempotency middleware with configurable IdempotencyStore interface
  - Extract ResponseBuffer to internal/rwutil for shared use by cache/etag/idempotency
  - Optimize cache key generation: SHA-256 → strings.Builder with Grow (78% faster)
  - Update JWT TokenStore interface for consistency

Signed-off-by: alexferl <me@alexferl.com>
@coveralls
Copy link
Copy Markdown

coveralls commented Mar 13, 2026

Pull Request Test Coverage Report for Build 23037474765

Details

  • 495 of 554 (89.35%) changed or added relevant lines in 8 files are covered.
  • 15 unchanged lines in 5 files lost coverage.
  • Overall coverage decreased (-0.2%) to 93.047%

Changes Missing Coverage Covered Lines Changed/Added Lines %
middleware/etag.go 67 79 84.81%
middleware/cache.go 74 87 85.06%
middleware/idempotency.go 169 203 83.25%
Files with Coverage Reduction New Missed Lines %
middleware/cache.go 2 87.04%
middleware/reverse_proxy.go 2 92.03%
sse.go 2 93.83%
middleware/etag.go 4 95.01%
server_tls.go 5 87.63%
Totals Coverage Status
Change from base Build 23024894965: -0.2%
Covered Lines: 8979
Relevant Lines: 9650

💛 - Coveralls

  Add b.Grow() calls to buildCanonicalRequest functions in hmac_signer.go
  and hmac_auth.go to reduce allocations. Improves HMAC auth by up to
  24% with 23-30% fewer allocations.

Signed-off-by: alexferl <me@alexferl.com>
  Both middleware were replaying cached headers on top of headers already
  set by other middleware (security headers, request IDs). Now they skip
  replaying any header key that's already present in the response.

Signed-off-by: alexferl <me@alexferl.com>
@alexferl alexferl merged commit 9c6915d into master Mar 13, 2026
9 checks passed
@alexferl alexferl deleted the idempotency branch March 13, 2026 05:25
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.

2 participants