dependabot[bot] opened a new pull request, #16178:
URL: https://github.com/apache/camel/pull/16178

   Bumps 
[software.amazon.kinesis:amazon-kinesis-client](https://github.com/awslabs/amazon-kinesis-client)
 from 2.6.0 to 3.0.0.
   <details>
   <summary>Changelog</summary>
   <p><em>Sourced from <a 
href="https://github.com/awslabs/amazon-kinesis-client/blob/master/CHANGELOG.md";>software.amazon.kinesis:amazon-kinesis-client's
 changelog</a>.</em></p>
   <blockquote>
   <h3>Release 3.0.0 (November 06, 2024)</h3>
   <ul>
   <li>New lease assignment / load balancing algorithm
   <ul>
   <li>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.</li>
   <li>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.</li>
   </ul>
   </li>
   <li>Optimized DynamoDB RCU usage
   <ul>
   <li>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.</li>
   <li>This approach significantly reduces read operations compared to earlier 
KCL versions, where workers performed full table scans, resulting in higher RCU 
consumption.</li>
   </ul>
   </li>
   <li>Graceful lease handoff
   <ul>
   <li>KCL 3.x introduces a feature called &quot;graceful lease handoff&quot; 
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 
<code>shutdownRequested()</code> method.</li>
   <li>This feature is enabled by default in KCL 3.x, but you can turn off this 
feature by adjusting the configuration property 
<code>isGracefulLeaseHandoffEnabled</code>.</li>
   <li>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.</li>
   </ul>
   </li>
   <li>New DynamoDB metadata management artifacts
   <ul>
   <li>KCL 3.x introduces two new DynamoDB tables for improved lease management:
   <ul>
   <li>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.</li>
   <li>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.</li>
   </ul>
   </li>
   <li>Follow this <a 
href="https://docs.aws.amazon.com/streams/latest/dev/kcl-migration-from-2-3.html#kcl-migration-from-2-3-IAM-permissions";>documentation</a>
 to add required IAM permissions for your KCL application.</li>
   </ul>
   </li>
   <li>Other improvements and changes
   <ul>
   <li>Dependency on the AWS SDK for Java 1.x has been fully removed.
   <ul>
   <li>The Glue Schema Registry integration functionality no longer depends on 
AWS SDK for Java 1.x. Previously, it required this as a transient 
dependency.</li>
   <li>Multilangdaemon has been upgraded to use AWS SDK for Java 2.x. It no 
longer depends on AWS SDK for Java 1.x.</li>
   </ul>
   </li>
   <li><code>idleTimeBetweenReadsInMillis</code> (PollingConfig) now has a 
minimum default value of 200.
   <ul>
   <li>This polling configuration property determines the <a 
href="https://github.com/awslabs/amazon-kinesis-client/blob/master/amazon-kinesis-client/src/main/java/software/amazon/kinesis/retrieval/polling/PrefetchRecordsPublisher.java";>publishers</a>
 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.</li>
   </ul>
   </li>
   <li>Shard lifecycle management is improved to deal with edge cases around 
shard splits and merges to ensure records continue being processed as 
expected.</li>
   </ul>
   </li>
   <li>Migration
   <ul>
   <li>The programming interfaces of KCL 3.x remain identical with KCL 2.x for 
an easier migration, with the exception of those applications that do not use 
the recommended approach of using the Config Builder. These applications will 
have to refer to <a 
href="https://docs.aws.amazon.com/streams/latest/dev/troubleshooting-consumers.html#compiliation-error-leasemanagementconfig";>the
 troubleshooting guide</a>. For detailed migration instructions, please refer 
to the <a 
href="https://docs.aws.amazon.com/streams/latest/dev/kcl-migration-from-2-3.html";>Migrate
 consumers from KCL 2.x to KCL 3.x</a> page in the Amazon Kinesis Data Streams 
developer guide.</li>
   </ul>
   </li>
   <li>Configuration properties
   <ul>
   <li>New configuration properties introduced in KCL 3.x are listed in this <a 
href="https://github.com/awslabs/amazon-kinesis-client/blob/master/docs/kcl-configurations.md#new-configurations-in-kcl-3x";>doc</a>.</li>
   <li>Deprecated configuration properties in KCL 3.x are listed in this <a 
href="https://github.com/awslabs/amazon-kinesis-client/blob/master/docs/kcl-configurations.md#discontinued-configuration-properties-in-kcl-3x";>doc</a>.
 You need to keep the deprecated configuration properties during the migration 
from any previous KCL version to KCL 3.x.</li>
   </ul>
   </li>
   <li>Metrics
   <ul>
   <li>New CloudWatch metrics introduced in KCL 3.x are explained in the <a 
href="https://docs.aws.amazon.com/streams/latest/dev/monitoring-with-kcl.html";>Monitor
 the Kinesis Client Library with Amazon CloudWatch</a> in the Amazon Kinesis 
Data Streams developer guide. The following operations are newly added in KCL 
3.x:
   <ul>
   <li><code>LeaseAssignmentManager</code></li>
   <li><code>WorkerMetricStatsReporter</code></li>
   <li><code>LeaseDiscovery</code></li>
   </ul>
   </li>
   </ul>
   </li>
   </ul>
   </blockquote>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li>See full diff in <a 
href="https://github.com/awslabs/amazon-kinesis-client/commits";>compare 
view</a></li>
   </ul>
   </details>
   <br />
   
   
   [![Dependabot compatibility 
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=software.amazon.kinesis:amazon-kinesis-client&package-manager=maven&previous-version=2.6.0&new-version=3.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
   
   Dependabot will resolve any conflicts with this PR as long as you don't 
alter it yourself. You can also trigger a rebase manually by commenting 
`@dependabot rebase`.
   
   [//]: # (dependabot-automerge-start)
   [//]: # (dependabot-automerge-end)
   
   ---
   
   <details>
   <summary>Dependabot commands and options</summary>
   <br />
   
   You can trigger Dependabot actions by commenting on this PR:
   - `@dependabot rebase` will rebase this PR
   - `@dependabot recreate` will recreate this PR, overwriting any edits that 
have been made to it
   - `@dependabot merge` will merge this PR after your CI passes on it
   - `@dependabot squash and merge` will squash and merge this PR after your CI 
passes on it
   - `@dependabot cancel merge` will cancel a previously requested merge and 
block automerging
   - `@dependabot reopen` will reopen this PR if it is closed
   - `@dependabot close` will close this PR and stop Dependabot recreating it. 
You can achieve the same result by closing it manually
   - `@dependabot show <dependency name> ignore conditions` will show all of 
the ignore conditions of the specified dependency
   - `@dependabot ignore this major version` will close this PR and stop 
Dependabot creating any more for this major version (unless you reopen the PR 
or upgrade to it yourself)
   - `@dependabot ignore this minor version` will close this PR and stop 
Dependabot creating any more for this minor version (unless you reopen the PR 
or upgrade to it yourself)
   - `@dependabot ignore this dependency` will close this PR and stop 
Dependabot creating any more for this dependency (unless you reopen the PR or 
upgrade to it yourself)
   
   
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@camel.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to