You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
TransactionCanceledException and IdempotentParameterMismatchException carry message; DynamoDB sends Message, and the token mismatch text differs #760
ExtendDB writes every error message under a lower-case message key (crates/server/src/response.rs). For TransactionCanceledException and IdempotentParameterMismatchException, DynamoDB sends Message.
Measured on Amazon DynamoDB in us-east-1 on 2026-10-29 with TransactWriteItems and raw signed requests. ExtendDB is main at 8099ff0 with the same requests.
A transaction whose ConditionCheck fails. DynamoDB:
{"__type":"com.amazonaws.dynamodb.v20120810#TransactionCanceledException","CancellationReasons":[{"Code":"None"},{"Code":"ConditionalCheckFailed","Message":"The conditional request failed"}],"Message":"Transaction cancelled, please refer cancellation reasons for specific reasons [None, ConditionalCheckFailed]"}
ExtendDB sends the same reasons and text, with the top-level key message.
A second TransactWriteItems with the same ClientRequestToken and a different ExpressionAttributeValues. DynamoDB:
{"__type":"com.amazonaws.dynamodb.v20120810#IdempotentParameterMismatchException","Message":"Specified idempotent token was used with different request parameters within the idempotency window"}
ExtendDB:
{"__type":"com.amazonaws.dynamodb.v20120810#IdempotentParameterMismatchException","message":"The request uses the same client token as a previous, but different, request."}
The other errors captured the same day (ConditionalCheckFailedException, TransactionConflictException, ValidationException, ResourceNotFoundException, InternalServerError, ProvisionedThroughputExceededException, LimitExceededException) use message on DynamoDB, as ExtendDB does. The SDK model names the member Message for these two exceptions.
Why it matters
botocore reads either key. A client that reads these two exceptions' member by its modeled name, Message, finds no message in ExtendDB's body. An application that logs or matches the token mismatch text sees a string the service does not send.
Proposed change
Choose the key per error type: Message for these two, message for the rest. Use the service's text for the token mismatch, and pin both bodies with raw-body tests.
Activity
LeeroyHannigan commentedon Nov 3, 2026
The two parts of this issue are in two pull requests:
MessageonTransactionCanceledExceptionandIdempotentParameterMismatchException. It says "Part of TransactionCanceledException and IdempotentParameterMismatchException carrymessage; DynamoDB sendsMessage, and the token mismatch text differs #760", so merging it leaves this issue open.Specified idempotent token was used with different request parameters within the idempotency window. fix(engine): compare the Return fields on a TransactWriteItems token replay #526 does not reference this issue, so close it by hand once both have merged.Re-measured on 3 November 2026 in us-east-1. A cancelled
TransactWriteItemsstill carriesMessage.