From 93c8f8da0db7e58c86fb4c2617d50c805edbfa00 Mon Sep 17 00:00:00 2001 From: Jan Hecking Date: Fri, 2 Jul 2021 19:49:01 +0800 Subject: [PATCH] Handle non-existent shards --- index.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 6830249..35b1513 100644 --- a/index.js +++ b/index.js @@ -147,8 +147,16 @@ class DynamoDBStream extends EventEmitter { StreamArn: this._streamArn } - const { ShardIterator } = await this._ddbStreams.getShardIterator(params) - shardData.nextShardIterator = ShardIterator + try { + const { ShardIterator } = await this._ddbStreams.getShardIterator(params) + shardData.nextShardIterator = ShardIterator + } catch (e) { + if (e.name === 'ResourceNotFoundException') { + debug('shard %s no longer exists, skipping', shardData.shardId) + } else { + throw e + } + } } async _getRecords() { @@ -162,6 +170,10 @@ class DynamoDBStream extends EventEmitter { async _getShardRecords(shardData) { debug('_getShardRecords') + if (!shardData.nextShardIterator) { + return [] + } + const params = { ShardIterator: shardData.nextShardIterator } try {