KinesisClientLibIOException: осколок не закрыт в потоке DynamoDB

У меня есть таблица DynamoDB, в которую я добавил поток. Я создал лямбду для обработки этого потока и тестирования пропускной способности, задержки и т. д. После завершения тестов я удалил триггер лямбды.

Затем я приступил к тестированию той же таблицы с клиентом Python MultiLangDaemon, чтобы сравнить а также посмотреть, сможет ли он подобрать место, где осталась лямбда.

Демон начинает обрабатывать осколки и взрывается за исключением ниже. В поисках я нашел только этот ответ, который не применялся. Я попытался удалить таблицу DynamoDB, используемую для отслеживания рабочего процесса, и заставить MultiLangDaemon воссоздать ее. То же самое произошло.

Почему это происходит и как восстановить без потери данных в потоке?

SEVERE: Caught exception:
com.amazonaws.services.kinesis.clientlibrary.exceptions.internal.KinesisClientLibIOException: Shard [shardId-00000001500614265247-3b7a2849, shardId-00000001500628985464-c896556e] is not closed. This can happen if we constructed the list of shards  while a reshard operation was in progress.
  at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardSyncer.assertClosedShardsAreCoveredOrAbsent(ShardSyncer.java:206)
  at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardSyncer.cleanupLeasesOfFinishedShards(ShardSyncer.java:652)
  at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardSyncer.syncShardLeases(ShardSyncer.java:141)
  at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardSyncer.checkAndCreateLeasesForNewShards(ShardSyncer.java:88)
  at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownTask.call(ShutdownTask.java:122)
  at com.amazonaws.services.kinesis.clientlibrary.lib.worker.MetricsCollectingTaskDecorator.call(MetricsCollectingTaskDecorator.java:49)
  at com.amazonaws.services.kinesis.clientlibrary.lib.worker.MetricsCollectingTaskDecorator.call(MetricsCollectingTaskDecorator.java:24)
  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  at java.lang.Thread.run(Thread.java:745)

person Juliano    schedule 21.07.2017    source источник