Skip to content

Releases: awslabs/amazon-kinesis-client-python

Release 3.0.1 of the Amazon Kinesis Client for Python

07 Nov 03:37
76a1e3f
Compare
Choose a tag to compare

Release 3.0.1 (November 6, 2024)

  • New lease assignment / load balancing algorithm
    • KCL 3.x introduces a new lease assignment and load balancing algorithm. It assigns leases among workers based on worker utilization metrics and throughput on each lease, replacing the previous lease count-based lease assignment algorithm.
    • When KCL detects higher variance in CPU utilization among workers, it proactively reassigns leases from over-utilized workers to under-utilized workers for even load balancing. This ensures even CPU utilization across workers and removes the need to over-provision the stream processing compute hosts.
  • Optimized DynamoDB RCU usage
    • KCL 3.x optimizes DynamoDB read capacity unit (RCU) usage on the lease table by implementing a global secondary index with leaseOwner as the partition key. This index mirrors the leaseKey attribute from the base lease table, allowing workers to efficiently discover their assigned leases by querying the index instead of scanning the entire table.
    • This approach significantly reduces read operations compared to earlier KCL versions, where workers performed full table scans, resulting in higher RCU consumption.
  • Graceful lease handoff
    • KCL 3.x introduces a feature called "graceful lease handoff" to minimize data reprocessing during lease reassignments. Graceful lease handoff allows the current worker to complete checkpointing of processed records before transferring the lease to another worker. For graceful lease handoff, you should implement checkpointing logic within the existing shutdownRequested() method.
    • This feature is enabled by default in KCL 3.x, but you can turn off this feature by adjusting the configuration property isGracefulLeaseHandoffEnabled.
    • While this approach significantly reduces the probability of data reprocessing during lease transfers, it doesn't completely eliminate the possibility. To maintain data integrity and consistency, it's crucial to design your downstream consumer applications to be idempotent. This ensures that the application can handle potential duplicate record processing without adverse effects.
  • New DynamoDB metadata management artifacts
    • KCL 3.x introduces two new DynamoDB tables for improved lease management:
      • Worker metrics table: Records CPU utilization metrics from each worker. KCL uses these metrics for optimal lease assignments, balancing resource utilization across workers. If CPU utilization metric is not available, KCL assigns leases to balance the total sum of shard throughput per worker instead.
      • Coordinator state table: Stores internal state information for workers. Used to coordinate in-place migration from KCL 2.x to KCL 3.x and leader election among workers.
    • Follow this documentation to add required IAM permissions for your KCL application.
  • Other improvements and changes
    • Dependency on the AWS SDK for Java 1.x has been fully removed.
      • The Glue Schema Registry integration functionality no longer depends on AWS SDK for Java 1.x. Previously, it required this as a transient dependency.
      • Multilangdaemon has been upgraded to use AWS SDK for Java 2.x. It no longer depends on AWS SDK for Java 1.x.
    • idleTimeBetweenReadsInMillis (PollingConfig) now has a minimum default value of 200.
      • This polling configuration property determines the publishers wait time between GetRecords calls in both success and failure cases. Previously, setting this value below 200 caused unnecessary throttling. This is because Amazon Kinesis Data Streams supports up to five read transactions per second per shard for shared-throughput consumers.
    • Shard lifecycle management is improved to deal with edge cases around shard splits and merges to ensure records continue being processed as expected.
  • Migration
    • The programming interfaces of KCL 3.x remain identical with KCL 2.x for an easier migration. For detailed migration instructions, please refer to the Migrate consumers from KCL 2.x to KCL 3.x page in the Amazon Kinesis Data Streams developer guide.
  • Configuration properties
    • New configuration properties introduced in KCL 3.x are listed in this doc.
    • Deprecated configuration properties in KCL 3.x are listed in this doc. You need to keep the deprecated configuration properties during the migration from any previous KCL version to KCL 3.x.
  • Metrics
    • New CloudWatch metrics introduced in KCL 3.x are explained in the Monitor the Kinesis Client Library with Amazon CloudWatch in the Amazon Kinesis Data Streams developer guide. The following operations are newly added in KCL 3.x:
      • LeaseAssignmentManager
      • WorkerMetricStatsReporter
      • LeaseDiscovery

Release 3.0.0 (November 6, 2024)

We found an issue with the release 3.0.0 regarding the build failure. Please use the release 3.0.1 to use KCL 3.0.

Release 2.1.5 of the Amazon Kinesis Client for Python

30 May 17:38
7948e09
Compare
Choose a tag to compare

Release 2.1.5 (May 29, 2024)

  • Fixed CI due to different macOS architecture PR #246
  • Added necessary Java SDKs to run sample PR #248
  • Upgraded boto dependency to boto3 PR #245
  • Upgraded AWS SDK from 2.19.2 to 2.25.11 PR #248
  • Upgraded aws-java-sdk from 1.12.370 to 1.12.668 PR #248

Release 2.1.4 of the Amazon Kinesis Client for Python

23 Apr 20:45
bd2c442
Compare
Choose a tag to compare

Release 2.1.4 (April 23, 2024)

  • Upgraded KCL and KCL-Multilang dependencies from 2.5.2 to 2.5.8 PR #239
  • Upgraded ion-java from 1.5.1 to 1.11.4 PR #243
  • Upgraded logback version from 1.3.0 to 1.3.12 PR #242
  • Upgraded io.netty dependency from 4.1.86.Final to 4.1.94.Final PR #234
  • Upgraded Google Guava dependency from 32.0.0-jre to 32.1.1-jre PR #234
  • Upgraded jackson-databind from 2.13.4 to 2.13.5 PR #234
  • Upgraded protobuf-java from 3.21.5 to 3.21.7 PR #234

Release 2.1.3 of the Amazon Kinesis Client for Python

08 Aug 20:37
Compare
Choose a tag to compare
  • Added the ability to specify STS endpoint and region PR #221
  • Upgraded KCL and KCL-Multilang Dependencies from 2.5.1 to 2.5.2 PR #221

Release 2.1.2 of the Amazon Kinesis Client for Python (June 29th, 2023)

29 Jun 21:41
Compare
Choose a tag to compare
  • Added the ability to pass in streamArn to multilang Daemon PR #221
  • Upgraded KCL and KCL-Multilang Dependencies from 2.4.4 to 2.5.1 PR #221
  • Upgraded Google Guava dependency from 31.0.1-jre to 32.0.0-jre PR #223
  • Added aws-java-sdk-sts dependency PR #212

Release 2.1.1 of the Amazon Kinesis Client for Python

18 Jan 19:20
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.1.0...v2.1.1

Release 2.1.0 of the Amazon Kinesis Client for Python

13 Jan 18:26
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.0.6...v2.1.0

Release 2.0.6 of the Amazon Kinesis Client for Python

24 Nov 00:40
Compare
Choose a tag to compare

Release 2.0.6 (November 23, 2021)

  • Upgraded multiple dependencies PR #152
    • Amazon Kinesis Client Library 2.3.9
    • ch.qos.logback 1.2.7

Release 2.0.5 of the Amazon Kinesis Client for Python

11 Nov 20:52
Compare
Choose a tag to compare

Release 2.0.5 (November 11, 2021)

  • Upgraded multiple dependencies PR #148
    • Amazon Kinesis Client Library 2.3.8
    • AWS SDK 2.17.52
  • Added dependencies
    • AWS SDK json-utils 2.17.52
    • third-party-jackson-core 2.17.52
    • third-party-jackson-dataformat-cbor 2.17.52
  • Updated samples/sample.properties reflecting support for InitialPositionInStreamExtended
    • Related: #804 Allowing user to specify an initial timestamp in which daemon will process records.
    • Feature released with previous release 2.0.4

Release 2.0.4: Fix breaking release 2.0.3

26 Oct 18:10
1a401f8
Compare
Choose a tag to compare

Release 2.0.4 (October 26, 2021)

  • Revert/downgrade multiple dependencies as KCL 2.3.7 contains breaking change PR #145
    • Amazon Kinesis Client Library 2.3.6
    • AWS SDK 2.16.98
  • Upgraded dependencies
    • jackson-dataformat-cbor 2.12.4
    • AWS SDK 1.12.3