Release 2.0.1 (August 21, 2018)
- Mark certain internal components with
@KinesisClientInternalApi
attribute.
Components marked as internal may be deprecated at a faster rate than public components. - Fixed an issue where
ResourceNotFoundException
on subscription to a shard was not triggering end of shard handling.
If a lease table contains a shard that is no longer present in the stream attempt to subscribe to that shard will trigger aResourceNotFoundException
. These exception are treated the same as reaching the end of a shard. - Fixed an issue where the KCL would not Use the configured DynamoDB IOPs when creating the lease table.
- Make the maximum number of Scheduler initialization attempts configurable.
The maximum number ofScheduler
initialization attempts can be configured viaCoordinatorConfig#maxInitializationAttempts
. - Fixed an issue where it was possible to get a duplicate record when resubscribing to a shard.
Subscribe to shard requires periodic resubscribing, and uses a new concept of a continuation sequence number. If the continuation sequence number was equal to the last record that record would be processed a second time. Resubscribing now usesAFTER_SEQUENCE_NUMBER
to ensure that only later records are returned. - Upgraded to AWS SDK 2.0.1
- Fixed an issue where time based restart of the subscription wasn't resetting the
lastRequestTime
.
If a subscription hasn't delivered any data for more than 30 seconds it will be canceled and restarted. This detection is based of thelastRequestTime
which wasn't getting reset after the restart was triggered. - Fixed an issue where requesting on the subscription from the
FanOutRecordsPublisher
could trigger an unexpected failure.
Due to a race condition the underlying flow in the subscription could be set to something else. The method is now synchronized, and verifies that the subscriber it was created with is still the subscriber in affect.
This issue generally would only appear when multiple errors were occurring while connecting to Kinesis. - Fixed an issue where the number of requested items could exceed the capacity of the RxJava queue.
There was an off by one issue when determining whether to make a request to the SDK subscription. This changes the calculation to represent the capacity as a queue.