Skip to content

Streams: a request without StreamArn, ShardId or ShardIterator answers SerializationException; DynamoDB Streams answers ValidationException #757

Open

Description

@LeeroyHannigan

DynamoDB Streams answers a request that lacks a required member with 400 ValidationException. ExtendDB answers it with 400 SerializationException, because the request does not deserialize into the input type.

Measured on Amazon DynamoDB Streams in us-east-1 on 2026-10-29 with raw signed requests, so no SDK check ran first. ExtendDB is main at 8099ff0 with the same requests:

Request DynamoDB Streams ExtendDB
DescribeStream with body {} ValidationException: Invalid StreamArn SerializationException: missing field `StreamArn`
GetShardIterator without ShardId ValidationException: 1 validation error detected: Value at 'shardId' failed to satisfy constraint: Member must not be null SerializationException: missing field `ShardId`
GetRecords with body {} ValidationException: Invalid ShardIterator: Missing ShardIterator SerializationException: missing field `ShardIterator`

The service's type is com.amazon.coral.validate#ValidationException. ExtendDB's is com.amazon.coral.service#SerializationException.

Why it matters

SDKs surface the error code. A client or a test that expects ValidationException for a Streams request with a missing member gets SerializationException from ExtendDB, and a match on the service's message fails.

Proposed change

Make StreamArn, ShardId and ShardIterator optional in the Streams input types and refuse a missing value in the handler with the messages above. A StreamArn that is present but not a stream ARN is refused with Invalid StreamArn by open pull request #466, which also closes #450 and #451.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions