Describe the bug
Our application no longer starts up on AWS ECS after upgrading from 3.31.4 to 3.32.1
We have a Java 21 application built into a docker image via JIB and deployed via CI to AWS ECS Fargate. Amongst other things, it has a component that attempts to periodically read data from AWS S3. This component is configured via config properties and has not been changed for many months:
@ApplicationScoped
S3ReplicaPoller<GeoTemplate> geoTemplateReplicaPoller(
@ConfigProperty(name = "replication.consumer.geotemplate_legacy.bucket") String bucket,
@ConfigProperty(name = "replication.consumer.geotemplate_legacy.replicaTypeName")
String replicaTypeName,
S3AsyncClient s3AsyncClient) {
...
}
After updating Quarkus to 3.32.1:
- our integration tests using localstack run locally, and all pass (exercising this component)
- running the application locally (in IntelliJ) but configured to point to AWS S3 buckets works correctly
- when the application is deployed to AWS ECS the application fails to start due to
java.lang.IllegalArgumentException: SRCFG00015: No configuration is available for this class loader
Expected behavior
The application should run normally with no exceptions due to configuration exceptions. (And this is the behaviour when using 3.31.4)
Actual behavior
We hit config exceptions which prevent startup of the application. we see the following stacktrace when this component is called:
java.lang.IllegalArgumentException: SRCFG00015: No configuration is available for this class loader
at io.smallrye.config.SmallRyeConfigProviderResolver.get(SmallRyeConfigProviderResolver.java:110)
at io.smallrye.config.Config.get(Config.java:1211)
at io.smallrye.config.inject.ConfigProducer.getConfig(ConfigProducer.java:44)
at io.smallrye.config.inject.ConfigProducer.produceStringConfigProperty(ConfigProducer.java:51)
at io.smallrye.config.inject.ConfigProducer_Subclass.produceStringConfigProperty$$superforward(Unknown Source)
at io.smallrye.config.inject.ConfigProducer_Subclass$9.apply(Unknown Source)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:73)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:62)
at io.quarkus.arc.runtime.ConfigStaticInitCheckInterceptor.aroundInvoke(ConfigStaticInitCheckInterceptor.java:47)
at io.quarkus.arc.runtime.ConfigStaticInitCheckInterceptor_Bean.intercept(Unknown Source)
at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:30)
at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:27)
at io.smallrye.config.inject.ConfigProducer_Subclass.produceStringConfigProperty(Unknown Source)
at io.smallrye.config.inject.ConfigProducer_ProducerMethod_produceStringConfigProperty_Slb1-DO4BbQxgDjjOw2BuNv12-I_Bean.create(Unknown Source)
at io.smallrye.config.inject.ConfigProducer_ProducerMethod_produceStringConfigProperty_Slb1-DO4BbQxgDjjOw2BuNv12-I_Bean.get(Unknown Source)
at io.smallrye.config.inject.ConfigProducer_ProducerMethod_produceStringConfigProperty_Slb1-DO4BbQxgDjjOw2BuNv12-I_Bean.get(Unknown Source)
at io.quarkus.arc.impl.CurrentInjectionPointProvider.get(CurrentInjectionPointProvider.java:44)
at com.endeavorstreaming.vesper.content_engine.loader.replication.ReplicationProducers_ProducerMethod_geoRestrictionTemplatesReplicaConsumer_2wGmyNxQallwkY5iO0IDWj-7Cdo_Bean.create(Unknown Source)
at com.endeavorstreaming.vesper.content_engine.loader.replication.ReplicationProducers_ProducerMethod_geoRestrictionTemplatesReplicaConsumer_2wGmyNxQallwkY5iO0IDWj-7Cdo_Bean.create(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:119)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:38)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:35)
at io.quarkus.arc.generator.Default_jakarta_enterprise_context_ApplicationScoped_ContextInstances.ch10(Unknown Source)
at io.quarkus.arc.generator.Default_jakarta_enterprise_context_ApplicationScoped_ContextInstances.computeIfAbsent(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:35)
at io.quarkus.arc.impl.ClientProxies.getApplicationScopedDelegate(ClientProxies.java:23)
at technology.dice.commons.datareplication.ReplicationProducers_ProducerMethod_geoRestrictionTemplatesReplicaConsumer_2wGmyNxQallwkY5iO0IDWj-7Cdo_ClientProxy.arc$delegate(Unknown Source)
at technology.dice.commons.datareplication.ReplicationProducers_ProducerMethod_geoRestrictionTemplatesReplicaConsumer_2wGmyNxQallwkY5iO0IDWj-7Cdo_ClientProxy.consume(Unknown Source)
at technology.dice.commons.datareplication.S3ReplicaPoller.lambda$poll$7(S3ReplicaPoller.java:71)
at java.base/java.util.Optional.map(Optional.java:260)
at technology.dice.commons.datareplication.S3ReplicaPoller.lambda$poll$8(S3ReplicaPoller.java:68)
at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179)
at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncApiCallMetricCollectionStage.lambda$execute$0(AsyncApiCallMetricCollectionStage.java:58)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179)
at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncApiCallTimeoutTrackingStage.lambda$execute$2(AsyncApiCallTimeoutTrackingStage.java:69)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179)
at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncRetryableStage$RetryingExecutor.lambda$attemptExecute$1(AsyncRetryableStage.java:132)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179)
at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.lambda$execute$0(MakeAsyncHttpRequestStage.java:110)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179)
at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.completeResponseFuture(MakeAsyncHttpRequestStage.java:253)
at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.lambda$executeHttpRequest$3(MakeAsyncHttpRequestStage.java:167)
at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934)
at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911)
at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
at io.quarkus.vertx.core.runtime.VertxCoreRecorder$15.runWith(VertxCoreRecorder.java:682)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)
at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1583)
How to Reproduce?
No reproducer yet as it's not clear why it is failing
Output of uname -a or ver
amazonlinux:2023.10.20260216.1-minimal
Output of java -version
OpenJDK 64-Bit Server VM Corretto-21.0.9.11.1 (build 21.0.9+11-LTS, mixed mode, sharing)
Quarkus version or git rev
3.32.1
Build tool (ie. output of mvnw --version or gradlew --version)
maven 3.8.7
Additional information
No response
Describe the bug
Our application no longer starts up on AWS ECS after upgrading from
3.31.4to3.32.1We have a Java 21 application built into a docker image via JIB and deployed via CI to AWS ECS Fargate. Amongst other things, it has a component that attempts to periodically read data from AWS S3. This component is configured via config properties and has not been changed for many months:
After updating Quarkus to
3.32.1:java.lang.IllegalArgumentException: SRCFG00015: No configuration is available for this class loaderExpected behavior
The application should run normally with no exceptions due to configuration exceptions. (And this is the behaviour when using
3.31.4)Actual behavior
We hit config exceptions which prevent startup of the application. we see the following stacktrace when this component is called:
How to Reproduce?
No reproducer yet as it's not clear why it is failing
Output of
uname -aorveramazonlinux:2023.10.20260216.1-minimal
Output of
java -versionOpenJDK 64-Bit Server VM Corretto-21.0.9.11.1 (build 21.0.9+11-LTS, mixed mode, sharing)
Quarkus version or git rev
3.32.1
Build tool (ie. output of
mvnw --versionorgradlew --version)maven 3.8.7
Additional information
No response