This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new e83b1c2de68 NIFI-15753 Improved ConsumeKinesis Polling checks for 
pending fetches (#11050)
e83b1c2de68 is described below

commit e83b1c2de68fbe3513bf9db5db3806b02f1917a5
Author: Pierre Villard <[email protected]>
AuthorDate: Wed Apr 1 22:41:12 2026 +0200

    NIFI-15753 Improved ConsumeKinesis Polling checks for pending fetches 
(#11050)
    
    - Added timeouts to PollingKinesisClientTest methods
    
    Signed-off-by: David Handermann <[email protected]>
---
 .../apache/nifi/processors/aws/kinesis/PollingKinesisClient.java | 5 ++++-
 .../nifi/processors/aws/kinesis/PollingKinesisClientTest.java    | 9 +++------
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git 
a/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-kinesis/src/main/java/org/apache/nifi/processors/aws/kinesis/PollingKinesisClient.java
 
b/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-kinesis/src/main/java/org/apache/nifi/processors/aws/kinesis/PollingKinesisClient.java
index 5e9cdfc0bea..8cb21e46b95 100644
--- 
a/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-kinesis/src/main/java/org/apache/nifi/processors/aws/kinesis/PollingKinesisClient.java
+++ 
b/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-kinesis/src/main/java/org/apache/nifi/processors/aws/kinesis/PollingKinesisClient.java
@@ -102,6 +102,9 @@ final class PollingKinesisClient extends 
KinesisConsumerClient {
 
     @Override
     boolean hasPendingFetches() {
+        if (fetchExecutor.isShutdown()) {
+            return false;
+        }
         if (hasQueuedResults()) {
             return true;
         }
@@ -328,7 +331,7 @@ final class PollingKinesisClient extends 
KinesisConsumerClient {
 
     private boolean enqueueIfActive(final String shardId, final 
PollingShardState state, final ShardFetchResult result) {
         synchronized (getShardLock(shardId)) {
-            if (state.isResetRequested()) {
+            if (state.isResetRequested() || state.isStopped()) {
                 return false;
             }
             enqueueResult(result);
diff --git 
a/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-kinesis/src/test/java/org/apache/nifi/processors/aws/kinesis/PollingKinesisClientTest.java
 
b/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-kinesis/src/test/java/org/apache/nifi/processors/aws/kinesis/PollingKinesisClientTest.java
index c663c6f4f1b..d89ad1bb0b2 100644
--- 
a/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-kinesis/src/test/java/org/apache/nifi/processors/aws/kinesis/PollingKinesisClientTest.java
+++ 
b/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-kinesis/src/test/java/org/apache/nifi/processors/aws/kinesis/PollingKinesisClientTest.java
@@ -246,9 +246,8 @@ class PollingKinesisClientTest {
         while (System.nanoTime() < replayQueuedDeadline && 
(getShardIteratorCallCount.get() < 2 || getRecordsCallCount.get() < 4)) {
             Thread.sleep(20);
         }
-        Thread.sleep(100);
 
-        final ShardFetchResult firstAfterRecovery = 
consumer.pollShardResult("shard-1");
+        final ShardFetchResult firstAfterRecovery = consumer.pollAnyResult(5, 
TimeUnit.SECONDS);
         assertNotNull(firstAfterRecovery, "Queue must contain results after 
iterator recovery");
         assertEquals(new BigInteger("200"), 
firstAfterRecovery.firstSequenceNumber(),
                 "Replayed checkpoint data must be delivered before any stale 
newer batch from the same shard");
@@ -408,9 +407,8 @@ class PollingKinesisClientTest {
         while (getShardIteratorCallCount.get() < 2 && System.nanoTime() < 
resetDeadline) {
             Thread.sleep(20);
         }
-        Thread.sleep(100);
 
-        final ShardFetchResult firstAfterRollback = 
consumer.pollShardResult("shard-1");
+        final ShardFetchResult firstAfterRollback = consumer.pollAnyResult(5, 
TimeUnit.SECONDS);
         assertNotNull(firstAfterRollback, "Queue must contain results after 
rollback and re-fetch");
         assertEquals(new BigInteger("500"), 
firstAfterRollback.firstSequenceNumber(),
                 "First result after rollback must be re-fetched data, not a 
stale pre-rollback result");
@@ -552,9 +550,8 @@ class PollingKinesisClientTest {
         while (getShardIteratorCallCount.get() < 2 && System.nanoTime() < 
resetDeadline) {
             Thread.sleep(20);
         }
-        Thread.sleep(100);
 
-        final ShardFetchResult firstAfterRollback = 
consumer.pollShardResult("shard-1");
+        final ShardFetchResult firstAfterRollback = consumer.pollAnyResult(5, 
TimeUnit.SECONDS);
         assertNotNull(firstAfterRollback, "Queue must contain results after 
rollback and re-fetch");
         assertEquals(new BigInteger("800"), 
firstAfterRollback.firstSequenceNumber(),
                 "First result after rollback must be re-fetched data (800), 
not the stale data (500) that was returned from GetRecords during the 
rollback");

Reply via email to