Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Maven build hangs after running S3Client in AWS Lambda application unit test #36526

Closed
adamcamp opened this issue Oct 17, 2023 · 7 comments
Closed
Labels

Comments

@adamcamp
Copy link

adamcamp commented Oct 17, 2023

Describe the bug

When testing S3Client using QuarkusTest and dev services in maven the build gets stuck and will not complete. After 10 minutes it logs a thread dump and terminates.

Expected behavior

The build completes the unit tests and finishes the rest of the build.

Actual behavior

After the unit tests the build freezes and does not complete.

How to Reproduce?

Create quarkus application with an AWS Lambda requestHandler:

public class TestRequestHandler implements RequestHandler<String, String> { @Override public String handleRequest(String s, Context context) { return s; } }

Create a unit test that talks to S3:

`@QuarkusTest
public class LambdaHandlerTest {

@Inject
S3Client s3Client;

@Test
public void testSimpleLambdaSuccess() throws Exception {
    s3Client.putObject(PutObjectRequest.builder()
                    .bucket("test-bucket")
                    .key("payload.json")
                    .contentType("application/json")
                    .build(),
            RequestBody.fromFile(new File("./src/test/resources/payload.json")));
}

}`

Output of uname -a or ver

No response

Output of java -version

Java 19+ is impacted

GraalVM version (if different from Java)

No response

Quarkus version or git rev

3.4.3

Build tool (ie. output of mvnw --version or gradlew --version)

Apache Maven 3.9.5 (57804ffe001d7215b5e7bcb531cf83df38f93546) Maven home: /home/linuxbrew/.linuxbrew/Cellar/maven/3.9.5/libexec Java version: 21, vendor: Homebrew, runtime: /home/linuxbrew/.linuxbrew/Cellar/openjdk/21/libexec Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "5.15.0-86-generic", arch: "amd64", family: "unix"

Additional information

No response

@adamcamp adamcamp added the kind/bug Something isn't working label Oct 17, 2023
@quarkus-bot
Copy link

quarkus-bot bot commented Oct 17, 2023

/cc @matejvasek (amazon-lambda), @patriot1burke (amazon-lambda), @quarkusio/devtools (maven)

@adamcamp
Copy link
Author

Sample log output before it hangs:

[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.89 s -- in com.test.lambda.LambdaHandlerTest 2023-10-17 08:41:09,541 WARN [io.qua.ama.lam.run.AbstractLambdaPollLoop] (Lambda Thread (TEST)) Aborting lambda poll loop: ending dev/test mode 2023-10-17 08:41:09,542 INFO [io.qua.ama.lam.run.AbstractLambdaPollLoop] (Lambda Thread (TEST)) Lambda polling thread complete (TEST)

@adamcamp
Copy link
Author

Thread dump post 10 minutes:

@QuarkusTest has detected a hang, as there has been no test activity in PT10M To configure this timeout use the quarkus.test.hang-detection-timeout config property A stack trace is below to help diagnose the potential hang === Stack Trace === Thread main: TIMED_WAITING Stack: java.base@21/jdk.internal.misc.Unsafe.park(Native Method) java.base@21/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) org.jboss.threads.EnhancedQueueExecutor.awaitTermination(EnhancedQueueExecutor.java:920) software.amazon.awssdk.utils.ScheduledExecutorUtils$UnmanagedScheduledExecutorService.awaitTermination(ScheduledExecutorUtils.java:85) java.base@21/java.util.concurrent.ExecutorService.close(ExecutorService.java:417) software.amazon.awssdk.utils.IoUtils.closeQuietly(IoUtils.java:70) software.amazon.awssdk.utils.IoUtils.closeIfCloseable(IoUtils.java:87) software.amazon.awssdk.utils.AttributeMap.lambda$close$0(AttributeMap.java:87) software.amazon.awssdk.utils.AttributeMap$$Lambda/0x00007f2cf896b8d8.accept(Unknown Source) java.base@21/java.util.HashMap$Values.forEach(HashMap.java:1073) software.amazon.awssdk.utils.AttributeMap.close(AttributeMap.java:87) software.amazon.awssdk.core.client.config.SdkClientConfiguration.close(SdkClientConfiguration.java:79) software.amazon.awssdk.core.internal.http.HttpClientDependencies.close(HttpClientDependencies.java:80) software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient.close(AmazonSyncHttpClient.java:75) software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.close(BaseSyncClientHandler.java:88) software.amazon.awssdk.services.s3.DefaultS3Client.close(DefaultS3Client.java:10525) io.quarkus.amazon.s3.runtime.S3ClientProducer.destroy(S3ClientProducer.java:62) io.quarkus.amazon.s3.runtime.S3ClientProducer_Bean.doDestroy(Unknown Source) io.quarkus.amazon.s3.runtime.S3ClientProducer_Bean.destroy(Unknown Source) io.quarkus.amazon.s3.runtime.S3ClientProducer_Bean.destroy(Unknown Source) io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:82) io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:21) io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:96) io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:462) io.quarkus.arc.Arc.shutdown(Arc.java:66) io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:53) io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) io.quarkus.runtime.StartupContext.close(StartupContext.java:73) io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) io.quarkus.runtime.Application.stop(Application.java:208) io.quarkus.runtime.Application.stop(Application.java:155) io.quarkus.runtime.Application.close(Application.java:137) io.quarkus.runner.bootstrap.StartupActionImpl$5.close(StartupActionImpl.java:293) io.quarkus.runner.bootstrap.RunningQuarkusApplicationImpl.close(RunningQuarkusApplicationImpl.java:35) app//io.quarkus.test.junit.QuarkusTestExtension$4.close(QuarkusTestExtension.java:285) app//io.quarkus.test.junit.QuarkusTestExtension$ExtensionState.doClose(QuarkusTestExtension.java:1234) app//io.quarkus.test.junit.QuarkusTestExtensionState.close(QuarkusTestExtensionState.java:42) app//org.junit.jupiter.engine.execution.ExtensionValuesStore$$Lambda/0x00007f2cf8970b10.execute(Unknown Source) app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) app//org.junit.jupiter.engine.execution.ExtensionValuesStore.lambda$closeAllStoredCloseableValues$3(ExtensionValuesStore.java:68) app//org.junit.jupiter.engine.execution.ExtensionValuesStore$$Lambda/0x00007f2cf896dde8.accept(Unknown Source) java.base@21/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) java.base@21/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) java.base@21/java.util.stream.SortedOps$RefSortingSink$$Lambda/0x00007f2cf81629b0.accept(Unknown Source) java.base@21/java.util.ArrayList.forEach(ArrayList.java:1596) java.base@21/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:395) java.base@21/java.util.stream.Sink$ChainedReference.end(Sink.java:261) java.base@21/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) java.base@21/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) java.base@21/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) java.base@21/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) java.base@21/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) java.base@21/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) app//org.junit.jupiter.engine.execution.ExtensionValuesStore.closeAllStoredCloseableValues(ExtensionValuesStore.java:68) app//org.junit.jupiter.engine.descriptor.AbstractExtensionContext.close(AbstractExtensionContext.java:80) app//org.junit.jupiter.engine.execution.JupiterEngineExecutionContext.close(JupiterEngineExecutionContext.java:53) app//org.junit.jupiter.engine.descriptor.JupiterEngineDescriptor.cleanUp(JupiterEngineDescriptor.java:70) app//org.junit.jupiter.engine.descriptor.JupiterEngineDescriptor.cleanUp(JupiterEngineDescriptor.java:31) app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$cleanUp$10(NodeTestTask.java:167) app//org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00007f2cf896cee0.execute(Unknown Source) app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) app//org.junit.platform.engine.support.hierarchical.NodeTestTask.cleanUp(NodeTestTask.java:167) app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:98) app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147) app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127) app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90) app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55) app//org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda/0x00007f2cf80a9260.accept(Unknown Source) app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102) app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54) app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) app//org.apache.maven.surefire.junitplatform.LazyLauncher.execute(LazyLauncher.java:56) app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:184) app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:148) app//org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:122) app//org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) app//org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) app//org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) app//org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) Thread Reference Handler: RUNNABLE Stack: java.base@21/java.lang.ref.Reference.waitForReferencePendingList(Native Method) java.base@21/java.lang.ref.Reference.processPendingReferences(Reference.java:246) java.base@21/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) Thread Finalizer: WAITING Waiting on java.lang.ref.NativeReferenceQueue$Lock@58a5b79 Stack: java.base@21/java.lang.Object.wait0(Native Method) java.base@21/java.lang.Object.wait(Object.java:366) java.base@21/java.lang.Object.wait(Object.java:339) java.base@21/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) java.base@21/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) java.base@21/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) java.base@21/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) Thread Signal Dispatcher: RUNNABLE Stack: Thread Notification Thread: RUNNABLE Stack: Thread Common-Cleaner: TIMED_WAITING Stack: java.base@21/jdk.internal.misc.Unsafe.park(Native Method) java.base@21/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) java.base@21/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1847) java.base@21/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) java.base@21/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) java.base@21/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) java.base@21/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) java.base@21/java.lang.Thread.runWith(Thread.java:1596) java.base@21/java.lang.Thread.run(Thread.java:1583) java.base@21/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) Thread surefire-forkedjvm-stream-flusher: TIMED_WAITING Stack: java.base@21/jdk.internal.misc.Unsafe.park(Native Method) java.base@21/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) java.base@21/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1758) java.base@21/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182) java.base@21/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899) java.base@21/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) java.base@21/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) java.base@21/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) java.base@21/java.lang.Thread.runWith(Thread.java:1596) java.base@21/java.lang.Thread.run(Thread.java:1583) Thread surefire-forkedjvm-command-thread: RUNNABLE Stack: java.base@21/java.io.FileInputStream.readBytes(Native Method) java.base@21/java.io.FileInputStream.read(FileInputStream.java:287) java.base@21/java.io.BufferedInputStream.read1(BufferedInputStream.java:345) java.base@21/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420) java.base@21/java.io.BufferedInputStream.read(BufferedInputStream.java:399) java.base@21/java.io.BufferedInputStream.fill(BufferedInputStream.java:291) java.base@21/java.io.BufferedInputStream.read1(BufferedInputStream.java:347) java.base@21/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420) java.base@21/java.io.BufferedInputStream.read(BufferedInputStream.java:399) app//org.apache.maven.surefire.api.util.internal.Channels$3.readImpl(Channels.java:169) app//org.apache.maven.surefire.api.util.internal.AbstractNoninterruptibleReadableChannel.read(AbstractNoninterruptibleReadableChannel.java:50) app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.read(AbstractStreamDecoder.java:430) app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.read(AbstractStreamDecoder.java:419) app//org.apache.maven.surefire.api.stream.AbstractStreamDecoder.readMessageType(AbstractStreamDecoder.java:116) app//org.apache.maven.surefire.booter.stream.CommandDecoder.decode(CommandDecoder.java:77) app//org.apache.maven.surefire.booter.spi.CommandChannelDecoder.decode(CommandChannelDecoder.java:60) app//org.apache.maven.surefire.booter.CommandReader$CommandRunnable.run(CommandReader.java:290) java.base@21/java.lang.Thread.runWith(Thread.java:1596) java.base@21/java.lang.Thread.run(Thread.java:1583) Thread Reference Reaper #1: WAITING Waiting on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@2ff2273d Stack: java.base@21/jdk.internal.misc.Unsafe.park(Native Method) java.base@21/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) java.base@21/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) java.base@21/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) java.base@21/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) java.base@21/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) java.base@21/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:67) java.base@21/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) java.base@21/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:234) app//io.smallrye.common.ref.References$ReaperThread.run(References.java:62) Thread Reference Reaper #2: WAITING Waiting on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@2ff2273d Stack: java.base@21/jdk.internal.misc.Unsafe.park(Native Method) java.base@21/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) java.base@21/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) java.base@21/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) java.base@21/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) java.base@21/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) java.base@21/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:67) java.base@21/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) java.base@21/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:234) app//io.smallrye.common.ref.References$ReaperThread.run(References.java:62) Thread Reference Reaper #3: WAITING Waiting on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@2ff2273d Stack: java.base@21/jdk.internal.misc.Unsafe.park(Native Method) java.base@21/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) java.base@21/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) java.base@21/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) java.base@21/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) java.base@21/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) java.base@21/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:67) java.base@21/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) java.base@21/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:234) app//io.smallrye.common.ref.References$ReaperThread.run(References.java:62) Thread Quarkus hang detection timer thread: RUNNABLE Stack: java.management@21/sun.management.ThreadImpl.dumpThreads0(Native Method) java.management@21/sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:518) java.management@21/sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:506) app//io.quarkus.test.junit.QuarkusTestExtension$1.run(QuarkusTestExtension.java:153) java.base@21/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) java.base@21/java.util.concurrent.FutureTask.run(FutureTask.java:317) java.base@21/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) java.base@21/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) java.base@21/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) java.base@21/java.lang.Thread.runWith(Thread.java:1596) java.base@21/java.lang.Thread.run(Thread.java:1583) Thread vertx-blocked-thread-checker: TIMED_WAITING Stack: java.base@21/java.lang.Object.wait0(Native Method) java.base@21/java.lang.Object.wait(Object.java:366) java.base@21/java.util.TimerThread.mainLoop(Timer.java:563) java.base@21/java.util.TimerThread.run(Timer.java:516) Thread vert.x-acceptor-thread-0: RUNNABLE Stack: java.base@21/sun.nio.ch.EPoll.wait(Native Method) java.base@21/sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:121) java.base@21/sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:130) java.base@21/sun.nio.ch.SelectorImpl.select(SelectorImpl.java:147) io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:68) io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:879) io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:526) io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) java.base@21/java.lang.Thread.runWith(Thread.java:1596) java.base@21/java.lang.Thread.run(Thread.java:1583) Thread vert.x-eventloop-thread-0: RUNNABLE Stack: java.base@21/sun.nio.ch.EPoll.wait(Native Method) java.base@21/sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:121) java.base@21/sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:130) java.base@21/sun.nio.ch.SelectorImpl.select(SelectorImpl.java:147) io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:68) io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:879) io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:526) io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) java.base@21/java.lang.Thread.runWith(Thread.java:1596) java.base@21/java.lang.Thread.run(Thread.java:1583) Thread testcontainers-ryuk: TIMED_WAITING Stack: java.base@21/java.lang.Object.wait0(Native Method) java.base@21/java.lang.Object.wait(Object.java:366) org.testcontainers.utility.RyukResourceReaper.lambda$null$0(RyukResourceReaper.java:102) org.testcontainers.utility.RyukResourceReaper$$Lambda/0x00007f2cf8545d88.run(Unknown Source) org.rnorth.ducttape.ratelimits.RateLimiter.doWhenReady(RateLimiter.java:27) org.testcontainers.utility.RyukResourceReaper.lambda$maybeStart$1(RyukResourceReaper.java:88) org.testcontainers.utility.RyukResourceReaper$$Lambda/0x00007f2cf8545b68.run(Unknown Source) java.base@21/java.lang.Thread.runWith(Thread.java:1596) java.base@21/java.lang.Thread.run(Thread.java:1583) Thread executor-thread-2: WAITING Waiting on org.jboss.threads.EnhancedQueueExecutor@21dafd18 Stack: java.base@21/jdk.internal.misc.Unsafe.park(Native Method) java.base@21/java.util.concurrent.locks.LockSupport.park(LockSupport.java:221) org.jboss.threads.EnhancedQueueExecutor$PoolThreadNode.park(EnhancedQueueExecutor.java:2276) org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1570) org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29) org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29) java.base@21/java.lang.Thread.runWith(Thread.java:1596) java.base@21/java.lang.Thread.run(Thread.java:1583) org.jboss.threads.JBossThread.run(JBossThread.java:501) Thread vert.x-worker-thread-0: WAITING Waiting on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@29104deb Stack: java.base@21/jdk.internal.misc.Unsafe.park(Native Method) java.base@21/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) java.base@21/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) java.base@21/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) java.base@21/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) java.base@21/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) java.base@21/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435) java.base@21/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) java.base@21/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) java.base@21/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) java.base@21/java.lang.Thread.runWith(Thread.java:1596) java.base@21/java.lang.Thread.run(Thread.java:1583) Thread vert.x-worker-thread-1: WAITING Waiting on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@29104deb Stack: java.base@21/jdk.internal.misc.Unsafe.park(Native Method) java.base@21/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) java.base@21/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519) java.base@21/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780) java.base@21/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725) java.base@21/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1707) java.base@21/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:435) java.base@21/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) java.base@21/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) java.base@21/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) java.base@21/java.lang.Thread.runWith(Thread.java:1596) java.base@21/java.lang.Thread.run(Thread.java:1583) === End Stack Trace ===

@adamcamp
Copy link
Author

As a workaround I downgraded to OpenJDK17 and that resolved the issue. It appears the issue is with JDK 19+ only

Doing some digging it appears that the root cause is likely an underlying AWS SDK bug:
aws/aws-sdk-java-v2#4395

@scrocquesel
Copy link
Contributor

@External-Marcus
Copy link

Tried with Java 20 and Quarkus 3.5.1. Still broken :(

@gsmet
Copy link
Member

gsmet commented Nov 16, 2023

This is not a Quarkus issue.

@gsmet gsmet closed this as not planned Won't fix, can't repro, duplicate, stale Nov 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants