Skip to content

[Mandrel/GraalVM for JDK 25+14] kafka-sasl native integration test fails with MissingResourceException #46968

@jerboaa

Description

@jerboaa

We see a failing native Kafka test in our CI. Specifically SaslKafkaConsumerTest.testReception is what is failing. It fails with:

__  ____  __  _____   ___  __ ____  ______ 
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ 
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \   
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/   
2025-03-24 17:56:38,277 INFO  [io.quarkus] (main) quarkus-integration-test-kafka-sasl 999-SNAPSHOT native (powered by Quarkus 999-SNAPSHOT) started in 0.014s. Listening on: http://0.0.0.0:8081
2025-03-24 17:56:38,278 INFO  [io.quarkus] (main) Profile prod activated. 
2025-03-24 17:56:38,278 INFO  [io.quarkus] (main) Installed features: [cdi, kafka-client, micrometer, resteasy, resteasy-jackson, smallrye-context-propagation, smallrye-health, vertx]
2025-03-24 17:56:38,852 WARN  [org.apa.kaf.cli.NetworkClient] (kafka-producer-network-thread | sasl-test-producer) [Producer clientId=sasl-test-producer] The metadata response from the cluster reported a recoverable issue with correlation id 1 : {test-sasl-consumer=LEADER_NOT_AVAILABLE}
2025-03-24 17:56:39,363 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-1) HTTP Request to /sasl failed, error id: 3990457f-faf0-4572-8519-7f6608b00393-1: org.jboss.resteasy.spi.UnhandledException: org.apache.kafka.common.KafkaException: Failed to construct kafka consumer
	at org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:357)
	at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:205)
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:452)
	at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invokePropagateNotFound$6(SynchronousDispatcher.java:275)
	at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:154)
	at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:321)
	at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:157)
	at org.jboss.resteasy.core.SynchronousDispatcher.invokePropagateNotFound(SynchronousDispatcher.java:260)
	at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:86)
	at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:151)
	at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:97)
	at io.quarkus.vertx.core.runtime.VertxCoreRecorder$15.runWith(VertxCoreRecorder.java:638)
	at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2654)
	at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)
	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@25-beta/java.lang.Thread.runWith(Thread.java:1460)
	at java.base@25-beta/java.lang.Thread.run(Thread.java:1447)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:832)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:808)
Caused by: org.apache.kafka.common.KafkaException: Failed to construct kafka consumer
	at org.apache.kafka.clients.consumer.internals.ClassicKafkaConsumer.<init>(ClassicKafkaConsumer.java:270)
	at org.apache.kafka.clients.consumer.internals.ConsumerDelegateCreator.create(ConsumerDelegateCreator.java:65)
	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:600)
	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:595)
	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:576)
	at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:556)
	at io.quarkus.it.kafka.sasl.SaslKafkaEndpoint.createConsumer(SaslKafkaEndpoint.java:66)
	at io.quarkus.it.kafka.sasl.SaslKafkaEndpoint.create(SaslKafkaEndpoint.java:35)
	at io.quarkus.it.kafka.sasl.SaslKafkaEndpoint_Bean.doCreate(Unknown Source)
	at io.quarkus.it.kafka.sasl.SaslKafkaEndpoint_Bean.create(Unknown Source)
	at io.quarkus.it.kafka.sasl.SaslKafkaEndpoint_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.impl.LazyValue.get(LazyValue.java:32)
	at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
	at io.quarkus.arc.impl.ComputingCacheContextInstances.computeIfAbsent(ComputingCacheContextInstances.java:19)
	at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:35)
	at io.quarkus.it.kafka.sasl.SaslKafkaEndpoint_Bean.get(Unknown Source)
	at io.quarkus.it.kafka.sasl.SaslKafkaEndpoint_Bean.get(Unknown Source)
	at io.quarkus.arc.impl.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:570)
	at io.quarkus.arc.impl.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:550)
	at io.quarkus.arc.impl.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:583)
	at io.quarkus.arc.impl.ArcContainerImpl$3.get(ArcContainerImpl.java:337)
	at io.quarkus.arc.impl.ArcContainerImpl$3.get(ArcContainerImpl.java:334)
	at io.quarkus.resteasy.common.runtime.QuarkusConstructorInjector.construct(QuarkusConstructorInjector.java:52)
	at org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory.createResource(POJOResourceFactory.java:64)
	at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:349)
	at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:70)
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:429)
	... 20 more
Caused by: org.apache.kafka.common.KafkaException: Failed to create new NetworkClient
	at org.apache.kafka.clients.ClientUtils.createNetworkClient(ClientUtils.java:255)
	at org.apache.kafka.clients.ClientUtils.createNetworkClient(ClientUtils.java:163)
	at org.apache.kafka.clients.consumer.internals.ConsumerUtils.createConsumerNetworkClient(ConsumerUtils.java:90)
	at org.apache.kafka.clients.consumer.internals.ClassicKafkaConsumer.<init>(ClassicKafkaConsumer.java:197)
	... 49 more
Caused by: org.apache.kafka.common.KafkaException: java.util.MissingResourceException: Can't find bundle for base name sun.security.util.resources.security, locale en_US
	at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:187)
	at org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:193)
	at org.apache.kafka.common.network.ChannelBuilders.clientChannelBuilder(ChannelBuilders.java:82)
	at org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:120)
	at org.apache.kafka.clients.ClientUtils.createNetworkClient(ClientUtils.java:224)
	... 52 more
Caused by: java.util.MissingResourceException: Can't find bundle for base name sun.security.util.resources.security, locale en_US
	at java.base@25-beta/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2012)
	at java.base@25-beta/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1664)
	at java.base@25-beta/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:122)
	at java.base@25-beta/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1529)
	at java.base@25-beta/java.util.ResourceBundle.getBundle(ResourceBundle.java:848)
	at java.base@25-beta/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1724)
	at java.base@25-beta/sun.security.util.ResourcesMgr.getBundle(ResourcesMgr.java:54)
	at java.base@25-beta/sun.security.util.ResourcesMgr.getString(ResourcesMgr.java:40)
	at java.base@25-beta/javax.security.auth.Subject$SecureSet.add(Subject.java:1037)
	at java.base@25-beta/java.util.Collections$SynchronizedCollection.add(Collections.java:2332)
	at org.apache.kafka.common.security.plain.PlainLoginModule.initialize(PlainLoginModule.java:40)
	at org.apache.kafka.common.security.authenticator.SaslClientCallbackHandler.configure(SaslClientCallbackHandler.java:64)
	at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:154)
	... 56 more

Steps to reproduce

  1. Get a GraalVM CE build for JDK 25+14. For example download it from our CI here.
  2. Run the native integration test with quarkus main (revision 3ef5d91380677a3d6c367ad0272fc1942fb9a4cb) for kafka-sasl.

Additional info

Example failure with GraalVM for JDK 25 community is here:
https://github.com/graalvm/mandrel/actions/runs/14029548134/job/39275704990#step:12:909

Seems to also reproduce with a Mandrel for JDK 25+14 local build for me (graal master revision cceca3206c26f1b270db1a84a1a754c5e6951b48).

The native integration test seems to work fine with MANDREL 23.1.7-dev JDK 21.0.7-beta+4-ea.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions