The existing ThreadPoolExecutor was misconfigured and caused
the thread pool to recycle idle threads continuously. VisualVM
showed that a thread got recycled about every 3 seconds, creating
and destroying several hundred threads in about 15 minutes.
Use ExecutorService.newFixedThreadPool instead, as recommended
by the javadoc for ExecutorService.
Disable the JavaDoc doclint when building with Java 8. Java 8 became
much more pedantic on bad practices, and the documentation hasn't been
cleaned up.
* Reduce Throttling Error Reports
Only report a throttling error if their are 6 consecutive throttles.
Moved the logging of throttling messages to the throttling
reporter.
* Handle No Lease, and Lease Loss in requestShutdown.
Ensure that the Worker is shutdown if there are no leases. Handle the
case where a lease is lost during the notification process.
* Add some more comments around possible race conditions.
Made the ShardInfo class public, and updated the documentation for a
number of the properties.
This will allow users to implement custom shard prioritization
strategies.
Fixes:
Issue #120
Updated to the newest version of the AWS Java SDK.
Fixes:
Amazon Kinesis Client for Python Issue awslabs/amazon-kinesis-client-python#27
Related:
PR #125
* Add Direct Dependency on Commons Log
Commons log was a transient dependency, but should have been a direct
dependency. Now take a direct dependency on it.
* Move to Next Release Version Snapshot
Changed version to 1.7.3-SNAPSHOT for next release.
MultiLangDaemon Feature Updates
The MultiLangDaemon has been upgraded to use the v2 interfaces, which allows access to enhanced checkpointing, and more information during record processor initialization. The MultiLangDaemon clients must be updated before they can take advantage of these new features.
Updated the MultiLangDaemon to use the v2 record processor interfaces, and added features to messages passed to MultiLangDaemon clients.
These changes will require updates to the various MultiLangDaemon clients. The changes for the Python version are complete, and other versions will be updated later.
Add a new method to the worker requestShutdown that allows the worker to
gracefully shutdown all record processors. The graceful shutdown gives
the record processors a last chance to checkpoint before they're
terminated.
To use these new features the record processor must implement
IShutdownnotificationaware.
* Add support for configuring DynamoDB endpoint
Adding a new field named `dynamoDBEndpoint` to the .properties file
that gets passed into the KCL multi-lang daemon. We need this ability
to point the KCL worker at a local instance of DynamoDB rather than in
AWS.
* Added the ability to use AWSCredentialsProvider's that require non-empty contructor args e.g. ProfileCredentialsProvider where you provide the profile name to use from your ~/.aws/credentials file
* Created a constructor without the dynamoDBEndpoint argument i.e. same arguments before the dynamo change, for backwards compatibility
Allow disabling the shard sync at startup if the lease table already
contains leases. This will reduce the startup load for larger streams
when restarted the Kinesis application.
* Add ability to specify different credential providers for Kinesis, DynamoDB, and CloudWatch. This is needed when accessing a cross-account Kineses stream using an assumed role.
* Fix copy/paste mistake.
* Update tests.
Thanks to rgfindl@
Clean up check for ShardIteratorType to prevent emitting a spurious message for every call to GetIterator
Add missing KinesisProxyTest, and add 3 new tests for getIterator.
Don't include checkpoint in hashCode/equality for ShardInfo, since it
changes. Checkpointing would cause the Worker to recreate the
ShardConsumer. Add unit tests that verify the equality constraints.
Remove the equality test for checkpoint from ShardInfoTests. Nothing
appears to rely on the checkpoint being part of ShardInfo.
Fix WorkerTest broken in overzealous simplification.
Added a new interface that allows the worker to prioritize which lease
assignment it will work on next. When using the
ParentsFirstshardprioritization the worker will select parents for
processing before selecting children. This will prevent ShardConsumers
from spending time sleeping in the WAITING_ON_PARENT_SHARDS state.
Added support for time based iterators. Time based iterators are only
used if there is no current checkpoint for that shard, otherwise the
sequence number of the checkpoint is used.
The test 'testWorkerForcefulShutdown' was using Thread.sleep() to create
the conditions for an interrupted state. It was possible for the test
to take enough time for the sleep to actually exit before the interrupt
was sent. This would cause the test to fail. Changing to a pair of
sempahores ensures that the test record processor will remain blocked
for the expected amount of time.
Merge, and slight adjustment, of
https://github.com/awslabs/amazon-kinesis-client/pull/61.
This allows configuration to explicitly set the name of the lease
table. The table name defaults to the application name which is the
current behavior.
Added the Travis CI configuration to enable continous integration
testing for common JDK version > 1.7.
Move gpg signing to its own profile to avoid causing issues with the
test, and integration-test phases.
Added unit tests for many of the classes in the client. Added new
dependencies for the unit tests to the POM file. Unit tests can be
executed the `surefire:test` goal, and are executed during the test phase.
Added integration tests for the client. The tests require access to
credentials that can interact with Kinesis, and DynamoDB. The
integration tests can be run by executing the
`failsafe:integration-test` goal, or are run as part of the
integration-test phase
**Resources in the integration tests are not currently released on
completion of the integration tests.**