diff --git a/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/kinesis/stream/pause/TestStandardRecordProcessorBlocker.java b/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/kinesis/stream/pause/TestStandardRecordProcessorBlocker.java index 66a9671f1078..592aecacf6f3 100644 --- a/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/kinesis/stream/pause/TestStandardRecordProcessorBlocker.java +++ b/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/kinesis/stream/pause/TestStandardRecordProcessorBlocker.java @@ -43,6 +43,7 @@ public void testBlockAndUnblock() { blockerInspector.awaitBlockAwaited(); assertTrue(thread.isAlive()); + blockerInspector.awaitThreadParked(thread); recordProcessorBlocker.unblock(); blockerInspector.awaitBlockExited(); } @@ -96,6 +97,7 @@ public void testBlockAndUnblock() { blockerInspector.awaitBlockAwaited(); assertTrue(thread.isAlive()); + blockerInspector.awaitThreadParked(thread); recordProcessorBlocker.unblock(); blockerInspector.awaitBlockExited(); } @@ -163,8 +165,8 @@ private static Runnable createRunnableWithInspector(final StandardRecordProcesso private static class TestThreadInspector { private static final Duration BUSY_WAIT_MAX_DURATION = Duration.ofSeconds(5); - private boolean blockAwaited = false; - private boolean blockExited = false; + private volatile boolean blockAwaited = false; + private volatile boolean blockExited = false; public void onBlockAwaited() { blockAwaited = true; @@ -182,6 +184,10 @@ public void awaitBlockExited() { busyWait(() -> !blockExited); } + public void awaitThreadParked(final Thread thread) { + busyWait(() -> thread.getState() != Thread.State.WAITING); + } + private void busyWait(final Supplier condition) { final long maxWait = System.currentTimeMillis() + BUSY_WAIT_MAX_DURATION.toMillis(); do {