The Amazon DynamoDB Streams Adapter implements the Amazon Kinesis interface so that your application can use KCL to consume and process data from a DynamoDB stream.
Apache License 2.0
97
stars
37
forks
source link
wrong aws java sdk version specified in pom.xml #19
However, it also specifies use of 1.9.0 for the KCL, which makes use of kinesis.model.ListShardsRequest, which appears to have been added in 1.11.272. As a result, this error occurs in programs using dynamodb-streams-kinesis-adapter 1.4.0 if they only install the dynamo streams adapter and its dependencies without separately installing KCL 1.9.0:
SEVERE: Caught throwable while processing data.
java.lang.NoClassDefFoundError: com/amazonaws/services/kinesis/model/ListShardsRequest
at com.amazonaws.services.kinesis.clientlibrary.proxies.KinesisProxy.listShards(KinesisProxy.java:291)
at com.amazonaws.services.kinesis.clientlibrary.proxies.KinesisProxy.getShardList(KinesisProxy.java:365)
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardSyncer.getShardList(ShardSyncer.java:319)
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardSyncer.syncShardLeases(ShardSyncer.java:121)
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardSyncer.checkAndCreateLeasesForNewShards(ShardSyncer.java:90)
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShardSyncTask.call(ShardSyncTask.java:71)
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.MetricsCollectingTaskDecorator.call(MetricsCollectingTaskDecorator.java:49)
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker.initialize(Worker.java:504)
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker.run(Worker.java:436)
at com.amazonaws.services.kinesis.multilang.MultiLangDaemon.call(MultiLangDaemon.java:114)
at com.amazonaws.services.kinesis.multilang.MultiLangDaemon.call(MultiLangDaemon.java:61)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: com.amazonaws.services.kinesis.model.ListShardsRequest
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 15 more
Closing because this is really the responsibility of the using application / client packaging scheme. Using the released dynamodb streams adapter package works when used as intended for processing dynamodb streams.
pom.xml
currently specifies version 1.11.218 for various aws sdks: https://github.com/awslabs/dynamodb-streams-kinesis-adapter/blob/a90496512a87852bd61fce8791fd53acc079ed7a/pom.xml#L26However, it also specifies use of 1.9.0 for the KCL, which makes use of
kinesis.model.ListShardsRequest
, which appears to have been added in 1.11.272. As a result, this error occurs in programs using dynamodb-streams-kinesis-adapter 1.4.0 if they only install the dynamo streams adapter and its dependencies without separately installing KCL 1.9.0: