Skip to content

ResourceNotFoundException if shard does not exist #16

Open
@jhecking

Description

@jhecking

We persist the stream's shard state periodically. When the service restarts, it loads the last known shard state. Occasionally this throws an error if the saved state contains a shard, which no longer exists:

22021-07-02T02:15:08.675Z (node:7) UnhandledPromiseRejectionWarning: ResourceNotFoundException: Requested resource not found: Shard does not exist
32021-07-02T02:15:08.675Z     at deserializeAws_json1_0GetShardIteratorCommandError (/var/app/node_modules/@aws-sdk/client-dynamodb-streams/dist/cjs/protocols/Aws_json1_0.js:240:41)
42021-07-02T02:15:08.675Z     at runMicrotasks (<anonymous>)
52021-07-02T02:15:08.675Z     at processTicksAndRejections (internal/process/task_queues.js:95:5)
62021-07-02T02:15:08.675Z     at async /var/app/node_modules/@aws-sdk/middleware-serde/dist/cjs/deserializerMiddleware.js:6:20
72021-07-02T02:15:08.675Z     at async /var/app/node_modules/@aws-sdk/middleware-signing/dist/cjs/middleware.js:12:24
82021-07-02T02:15:08.675Z     at async StandardRetryStrategy.retry (/var/app/node_modules/@aws-sdk/middleware-retry/dist/cjs/StandardRetryStrategy.js:51:46)
92021-07-02T02:15:08.675Z     at async /var/app/node_modules/@aws-sdk/middleware-logger/dist/cjs/loggerMiddleware.js:6:22
102021-07-02T02:15:08.675Z     at async DynamoDBStream._getShardIterator (/var/app/node_modules/dynamodb-stream/index.js:150:29)
112021-07-02T02:15:08.675Z     at async dispatch (/var/app/node_modules/@kessler/async-map-limit/impl.js:30:22)

I think the client should just ignore such errors and remove the shard from its list.

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