TransactWriteItems token replay ignores ReturnConsumedCapacity and ReturnItemCollectionMetrics
Maintainer thường phản hồi trong vòng 2 ngày
Đánh giá
Issue này chưa được đánh giá.
Mô tả
What happens
TransactWriteItems decides whether a request with a ClientRequestToken it has already seen is a replay by comparing a fingerprint of the request. The fingerprint covers TransactItems only (compute_fingerprint in crates/engine/src/transact_write_helpers.rs), so a second request that keeps the token and the items but changes ReturnConsumedCapacity or ReturnItemCollectionMetrics is served as a replay.
When the fingerprints differ, the error message is The request uses the same client token as a previous, but different, request.
What DynamoDB does
Measured 2026-10-24 at 17:31 UTC in us-east-1, client retries off. Each first call carries a token and one Update (SET v = :v), and the second call repeats the token and the items:
| first call | second call | answer to the second call |
|---|---|---|
| no Return fields | the same | 200, replay |
| no Return fields | ReturnConsumedCapacity: TOTAL |
400 IdempotentParameterMismatchException |
| no Return fields | ReturnConsumedCapacity: NONE |
200, replay |
| no Return fields | ReturnItemCollectionMetrics: SIZE |
400 IdempotentParameterMismatchException |
| no Return fields | ReturnItemCollectionMetrics: NONE |
200, replay |
ReturnConsumedCapacity: TOTAL |
no Return fields | 400 IdempotentParameterMismatchException |
The message in every mismatch row is Specified idempotent token was used with different request parameters within the idempotency window. The same mismatch, with the same message, was measured earlier the same day for a removal-only Update with ReturnConsumedCapacity: TOTAL added on the replay.
So the service compares the two Return fields as well as the items, and treats an absent field as NONE.
Reproduction on main (744ea291)
TransactWriteItemswithClientRequestToken: t1and oneUpdateof keyk.- The same request with
ReturnConsumedCapacity: TOTALadded.
ExtendDB answers the second call with 200 and ConsumedCapacity of 2.0 read capacity units, as a replay. DynamoDB answers IdempotentParameterMismatchException. A third call with the same token and a different key answers IdempotentParameterMismatchException on both, with the different message text above.
- Ngôn ngữ chính
- Rust
- Star
- 517
- Fork
- 60
- Merge trung bình
- 2 ngày 23 giờ
- Pull request đã merge (30 ngày)
- 25
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của ExtendDB/extenddb
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 2 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 2 ngày
-
[storage.cassandra] accepts unknown keys silentlyCó thể đã có người làm @LeeroyHannigan đã nhận 1 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
ExtendDB/extenddb#540 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 2 ngày
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của ExtendDB/extenddb
Issue tương tự
-
accounts bug decoding
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
wboayue/rust-ibapi#1088 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
`mise doctor` Shows Not Installed Lazy Tools as ProblemsCó thể đã có người làm @jdx đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
Maintainer thường phản hồi trong vòng 1 ngày
-
area:kernel needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
bherbruck/solvecraft#7179 · 1 bình luận ·
-
priority: medium
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 61/100
storytold/photocraft#9704 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày