Release v1.14.0 of the Amazon Kinesis Client Library for Java
Release 1.14.0 (August 17, 2020)
-
Behavior of shard synchronization is moving from each worker independently learning about all existing shards to workers only discovering the children of shards that each worker owns. This optimizes memory usage, lease table IOPS usage, and number of calls made to kinesis for streams with high shard counts and/or frequent resharding.
-
When bootstrapping an empty lease table, KCL utilizes the ListShard API's filtering option (the ShardFilter optional request parameter) to retrieve and create leases only for a snapshot of shards open at the time specified by the ShardFilter parameter. The ShardFilter parameter enables you to filter out the response of the ListShards API, using the Type parameter. KCL uses the Type filter parameter and the following of its valid values to identify and return a snapshot of open shards that might require new leases.
- Currently, the following shard filters are supported:
AT_TRIM_HORIZON
- the response includes all the shards that were open atTRIM_HORIZON
.AT_LATEST
- the response includes only the currently open shards of the data stream.AT_TIMESTAMP
- the response includes all shards whose start timestamp is less than or equal to the given timestamp and end timestamp is greater than or equal to the given timestamp or still open.
ShardFilter
is used when creating leases for an empty lease table to initialize leases for a snapshot of shards specified atKinesisClientLibConfiguration#initialPositionInStreamExtended
.- For more information about ShardFilter, see the official AWS documentation on ShardFilter.
- Currently, the following shard filters are supported:
-
Introducing support for the
ChildShards
response of theGetRecords
API to perform lease/shard synchronization that happens atSHARD_END
for closed shards, allowing a KCL worker to only create leases for the child shards of the shard it finished processing.- For KCL 1.x applications, this uses the
ChildShards
response of theGetRecords
API. - For more information, see the official AWS Documentation on GetRecords and ChildShard.
- For KCL 1.x applications, this uses the
-
KCL now also performs additional periodic shard/lease scans in order to identify any potential holes in the lease table to ensure the complete hash range of the stream is being processed and create leases for them if required. When
KinesisClientLibConfiguration#shardSyncStrategyType
is set toShardSyncStrategyType.SHARD_END
,PeriodicShardSyncManager#leasesRecoveryAuditorInconsistencyConfidenceThreshold
will be used to determine the threshold for number of consecutive scans containing holes in the lease table after which to enforce a shard sync. WhenKinesisClientLibConfiguration#shardSyncStrategyType
is set toShardSyncStrategyType.PERIODIC
,leasesRecoveryAuditorInconsistencyConfidenceThreshold
is ignored.- New configuration options are available to configure
PeriodicShardSyncManager
inKinesisClientLibConfiguration
Name Default Description leasesRecoveryAuditorInconsistencyConfidenceThreshold 3 Confidence threshold for the periodic auditor job to determine if leases for a stream in the lease table is inconsistent. If the auditor finds same set of inconsistencies consecutively for a stream for this many times, then it would trigger a shard sync. Only used for ShardSyncStrategyType.SHARD_END
.- New CloudWatch metrics are also now emitted to monitor the health of
PeriodicShardSyncManager
:
Name Description NumStreamsWithPartialLeases Number of streams that had holes in their hash ranges. NumStreamsToSync Number of streams which underwent a full shard sync. - New configuration options are available to configure
-
Introducing deferred lease cleanup. Leases will be deleted asynchronously by
LeaseCleanupManager
upon reachingSHARD_END
, when a shard has either expired past the stream’s retention period or been closed as the result of a resharding operation.- New configuration options are available to configure
LeaseCleanupManager
.
Name Default Description leaseCleanupIntervalMillis 1 minute Interval at which to run lease cleanup thread. completedLeaseCleanupIntervalMillis 5 minutes Interval at which to check if a lease is completed or not. garbageLeaseCleanupIntervalMillis 30 minutes Interval at which to check if a lease is garbage (i.e trimmed past the stream's retention period) or not. - New configuration options are available to configure
-
Including an optimization to
KinesisShardSyncer
to only create leases for one layer of shards. -
Changing default shard prioritization strategy to be
NoOpShardPrioritization
to allow prioritization of completed shards. Customers who are upgrading to this version and are reading fromTRIM_HORIZON
should continue usingParentFirstPrioritization
while upgrading. -
Upgrading version of AWS SDK to 1.11.844.
-
#719 Upgrading version of Google Protobuf to 3.11.4.
-
#712 Allowing KCL to consider lease tables in
UPDATING
healthy.