graal icon indicating copy to clipboard operation
graal copied to clipboard

javax.naming.directory.InitialDirContext fails on windows

Open jvalkeal opened this issue 3 years ago • 7 comments

Describe the issue

Essentially on windows image you will get NPE from:

java.lang.NullPointerException
	at sun.net.dns.ResolverConfigurationImpl.stringToList(ResolverConfigurationImpl.java:69)
	at sun.net.dns.ResolverConfigurationImpl.loadConfig(ResolverConfigurationImpl.java:136)
	at sun.net.dns.ResolverConfigurationImpl.nameservers(ResolverConfigurationImpl.java:159)
	at com.sun.jndi.dns.DnsContextFactory.serversForUrls(DnsContextFactory.java:149)
	at com.sun.jndi.dns.DnsContextFactory.getContext(DnsContextFactory.java:81)
	at com.sun.jndi.dns.DnsContextFactory.urlToContext(DnsContextFactory.java:120)
	at com.sun.jndi.dns.DnsContextFactory.getInitialContext(DnsContextFactory.java:64)
	at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:732)
	at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
	at javax.naming.InitialContext.init(InitialContext.java:236)
	at javax.naming.InitialContext.<init>(InitialContext.java:208)
	at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:130)

Steps to reproduce the issue

Test code and GH Actions runs can be found from https://github.com/jvalkeal/win-netty-issue. There doesn't seem to be any issues on macos/linux, just when running native on windows. Matrix build shows that java Test runs ok but test.exe doesn't.

Describe GraalVM and your environment:

  • GraalVM version [latest, dev, '22.0.0.2']
  • JDK major version: [11/17]
  • OS: [Windows in GH Runners]
  • Architecture: [e.g.: AMD64]

More details

This was originally reported and discussed as a netty issue as it looks to initiate call to this stack.

https://github.com/spring-projects-experimental/spring-native/issues/1319 https://github.com/spring-projects/spring-framework/issues/27749

However looks like for some reason https://github.com/openjdk/jdk/blob/a9a271179d2a7952154b7509a999b100cc98b13c/src/java.base/windows/classes/sun/net/dns/ResolverConfigurationImpl.java#L101 doesn't initialize class fields via native call, thus the NPE. Or at least that's where my debugging skills stopped.

jvalkeal avatar Feb 08 '22 19:02 jvalkeal

Please add the spring label to this issue.

sdeleuze avatar Feb 08 '22 19:02 sdeleuze

Hi I am also affected with this issue. Is there any workaround?

Saljack avatar Mar 10 '22 14:03 Saljack

@Saljack, you can use following jni-config.json

[
  {
    "name":"sun.net.dns.ResolverConfigurationImpl",
    "fields":[
      {"name":"os_searchlist"},
      {"name":"os_nameservers"}
    ]
  }
]

in conjunction with --initialize-at-run-time=sun.net.dns.ResolverConfigurationImpl as workaround.

Paullo612 avatar Apr 23 '22 16:04 Paullo612

Thanks for your suggestion, it is really helpful for resolving my problem. Let me paste my error message to help the search engine to locate this page [ WARN] (Thread-0) throwIfFatal detected a jvm fatal exception, which is thrown and logged below: - java.lang.ExceptionInInitializerError java.lang.ExceptionInInitializerError at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder$1.provider(DnsServerAddressStreamProviders.java:142) at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder$1.<init>(DnsServerAddressStreamProviders.java:122) at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder.<clinit>(DnsServerAddressStreamProviders.java:120) at io.netty.resolver.dns.DnsServerAddressStreamProviders.unixDefault(DnsServerAddressStreamProviders.java:109) at io.netty.resolver.dns.DnsServerAddressStreamProviders.platformDefault(DnsServerAddressStreamProviders.java:105) at io.netty.resolver.dns.DnsNameResolverBuilder.<init>(DnsNameResolverBuilder.java:60) at reactor.netty.transport.NameResolverProvider.newNameResolverGroup(NameResolverProvider.java:479) at reactor.netty.tcp.TcpResources.getOrCreateDefaultResolver(TcpResources.java:315) at reactor.netty.http.HttpResources.getOrCreateDefaultResolver(HttpResources.java:162) at reactor.netty.http.client.HttpClientConfig.defaultAddressResolverGroup(HttpClientConfig.java:395) at reactor.netty.transport.ClientTransportConfig.resolverInternal(ClientTransportConfig.java:225) at reactor.netty.http.client.HttpClientConfig.resolverInternal(HttpClientConfig.java:449) at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect.lambda$subscribe$0(HttpClientConnect.java:265) at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:58) at reactor.core.publisher.FluxRetryWhen.subscribe(FluxRetryWhen.java:77) at reactor.core.publisher.MonoRetryWhen.subscribeOrReturn(MonoRetryWhen.java:46) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:57) at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect.subscribe(HttpClientConnect.java:272) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) at reactor.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:55) at reactor.core.publisher.Mono.subscribe(Mono.java:4444) at reactor.core.publisher.Mono.subscribeWith(Mono.java:4510) at reactor.core.publisher.Mono.subscribe(Mono.java:4272) at cn.gzten.kay.KayWithWebClient.issueAnHttpRequest(KayWithWebClient.java:145) at [email protected]/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:577) at [email protected]/java.util.concurrent.FutureTask.run(FutureTask.java:317) at [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at [email protected]/java.lang.Thread.run(Thread.java:1589) at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:775) at org.graalvm.nativeimage.builder/com.oracle.svm.core.windows.WindowsPlatformThreads.osThreadStartRoutine(WindowsPlatformThreads.java:178) Caused by: java.lang.NullPointerException at [email protected]/sun.net.dns.ResolverConfigurationImpl.stringToList(ResolverConfigurationImpl.java:71) at [email protected]/sun.net.dns.ResolverConfigurationImpl.loadConfig(ResolverConfigurationImpl.java:138) at [email protected]/sun.net.dns.ResolverConfigurationImpl.nameservers(ResolverConfigurationImpl.java:161) at [email protected]/com.sun.jndi.dns.DnsContextFactory.serversForUrls(DnsContextFactory.java:149) at [email protected]/com.sun.jndi.dns.DnsContextFactory.getContext(DnsContextFactory.java:81) at [email protected]/com.sun.jndi.dns.DnsContextFactory.urlToContext(DnsContextFactory.java:120) at [email protected]/com.sun.jndi.dns.DnsContextFactory.getInitialContext(DnsContextFactory.java:64) at [email protected]/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:732) at [email protected]/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305) at [email protected]/javax.naming.InitialContext.init(InitialContext.java:236) at [email protected]/javax.naming.InitialContext.<init>(InitialContext.java:208) at [email protected]/javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:130) at io.netty.resolver.dns.DirContextUtils.addNameServers(DirContextUtils.java:49) at io.netty.resolver.dns.DefaultDnsServerAddressStreamProvider.<clinit>(DefaultDnsServerAddressStreamProvider.java:53) ... 31 more

ShanGor avatar Nov 26 '22 15:11 ShanGor

Hello Team,

I am also encountering this issue. The suggested workaround is working, many thanks. With that said, would it be possible to have a permanent fix instead of the workaround please? Maybe could you provide a Registrar like solution?

Thank you, happy new year!!!

https://github.com/spring-projects/spring-data-redis/issues/2480

patpatpat123 avatar Jan 04 '23 14:01 patpatpat123

Hi @fernando-valdez,

I have looked into this issue. The ResolverConfigurationImpl class is initialized at build time by default. During initialization, it invokes the JNI method init0, which sets values for the static global variables searchlistID and nameserversID.

ResolverConfigurationImpl.c#L249

At runtime, when the searchlist or nameservers methods are called, the JNI method loadDNSconfig0 is invoked. However, the searchlistID and nameserversID variables in ResolverConfigurationImpl.c are only set at build time and are not initialized with values at runtime.

ResolverConfigurationImpl.c#L264

As a result, the os_searchlist and os_nameservers variables on the Java side are not set with values, leading to a NullPointerException. This issue is specific to Windows. To address this issue, It is necessary to modify the ResolverConfigurationImpl class to be initialized at runtime, as suggested in https://github.com/oracle/graal/issues/4304#issuecomment-1107528415. I have created a pull request to implement this change. #10396

gingk1212 avatar Jan 02 '25 14:01 gingk1212

@Saljack, you can use following jni-config.json

[ { "name":"sun.net.dns.ResolverConfigurationImpl", "fields":[ {"name":"os_searchlist"}, {"name":"os_nameservers"} ] } ] in conjunction with --initialize-at-run-time=sun.net.dns.ResolverConfigurationImpl as workaround.

@Saljack,您可以使用以下jni-config.json

[ { "name":"sun.net.dns.ResolverConfigurationImpl", "fields":[ {"name":"os_searchlist"}, {"name":"os_nameservers"} ] } ] --initialize-at-run-time=sun.net.dns.ResolverConfigurationImpl与解决方法结合使用。

I added jni-config.json in the META-INF.native-image directory, and other exceptions occurred

java.lang.NoSuchFieldError: sun.net.dns.ResolverConfigurationImpl.os_searchlist at org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions$Support.getFieldID(JNIFunctions.java:1869) ~[na:na] at org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions.GetStaticFieldID(JNIFunctions.java:467) ~[na:na] at [email protected]/sun.net.dns.ResolverConfigurationImpl.init0(Native Method) ~[na:na] at [email protected]/sun.net.dns.ResolverConfigurationImpl.(ResolverConfigurationImpl.java:199) ~[na:na] at [email protected]/sun.net.dns.ResolverConfiguration.open(ResolverConfiguration.java:56) ~[demo.exe:na] at [email protected]/com.sun.jndi.dns.DnsContextFactory.serversForUrls(DnsContextFactory.java:148) ~[demo.exe:na] at [email protected]/com.sun.jndi.dns.DnsContextFactory.getContext(DnsContextFactory.java:81) ~[demo.exe:na] at [email protected]/com.sun.jndi.dns.DnsContextFactory.urlToContext(DnsContextFactory.java:119) ~[demo.exe:na] at [email protected]/com.sun.jndi.dns.DnsContextFactory.getInitialContext(DnsContextFactory.java:64) ~[demo.exe:na] at [email protected]/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:505) ~[demo.exe:na] at [email protected]/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305) ~[demo.exe:na] at [email protected]/javax.naming.InitialContext.init(InitialContext.java:236) ~[demo.exe:na] at [email protected]/javax.naming.InitialContext.(InitialContext.java:208) ~[demo.exe:na] at [email protected]/javax.naming.directory.InitialDirContext.(InitialDirContext.java:130) ~[demo.exe:na] at io.netty.resolver.dns.DirContextUtils.addNameServers(DirContextUtils.java:49) ~[na:na] at io.netty.resolver.dns.DefaultDnsServerAddressStreamProvider.(DefaultDnsServerAddressStreamProvider.java:70) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder$1.provider(DnsServerAddressStreamProviders.java:150) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder$1.(DnsServerAddressStreamProviders.java:130) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder.(DnsServerAddressStreamProviders.java:128) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders.unixDefault(DnsServerAddressStreamProviders.java:117) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders.platformDefault(DnsServerAddressStreamProviders.java:113) ~[na:na] at io.netty.resolver.dns.DnsNameResolverBuilder.(DnsNameResolverBuilder.java:71) ~[na:na] at reactor.netty.transport.NameResolverProvider.newNameResolverGroup(NameResolverProvider.java:589) ~[na:na] at reactor.netty.transport.ClientTransportConfig.lambda$getOrCreateResolver$0(ClientTransportConfig.java:274) ~[demo.exe:1.2.5] at [email protected]/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1724) ~[demo.exe:na] at reactor.netty.internal.util.MapUtils.computeIfAbsent(MapUtils.java:63) ~[na:na] at reactor.netty.transport.ClientTransportConfig.getOrCreateResolver(ClientTransportConfig.java:273) ~[demo.exe:1.2.5] at reactor.netty.transport.ClientTransport.runOn(ClientTransport.java:422) ~[demo.exe:1.2.5] at reactor.netty.tcp.TcpClient.runOn(TcpClient.java:318) ~[demo.exe:1.2.5] at reactor.netty.tcp.TcpClient.runOn(TcpClient.java:74) ~[demo.exe:1.2.5] at reactor.netty.transport.Transport.runOn(Transport.java:248) ~[demo.exe:1.2.5] at reactor.netty.tcp.TcpClient.runOn(TcpClient.java:313) ~[demo.exe:1.2.5] at io.asyncer.r2dbc.mysql.client.Client.connect(Client.java:143) ~[demo.exe:1.4.1] at io.asyncer.r2dbc.mysql.MySqlConnectionFactory.lambda$getMySqlConnection$2(MySqlConnectionFactory.java:141) ~[na:na] at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:153) ~[demo.exe:3.7.5] at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) ~[demo.exe:3.7.5] at reactor.core.publisher.Mono.subscribe(Mono.java:4560) ~[demo.exe:3.7.5] at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.run(MonoSubscribeOn.java:126) ~[demo.exe:3.7.5] at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84) ~[demo.exe:3.7.5] at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37) ~[demo.exe:3.7.5] at [email protected]/java.util.concurrent.FutureTask.run(FutureTask.java:328) ~[demo.exe:na] at [email protected]/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:309) ~[na:na] at [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1095) ~[demo.exe:na] at [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:619) ~[na:na] at [email protected]/java.lang.Thread.runWith(Thread.java:1460) ~[demo.exe:na] at [email protected]/java.lang.Thread.run(Thread.java:1447) ~[demo.exe:na] at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:832) ~[demo.exe:na] at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:808) ~[demo.exe:na]

2025-04-29T17:39:10.394+08:00 WARN 29628 --- [demo] [ single-1] reactor.core.Exceptions : throwIfFatal detected a jvm fatal exception, which is thrown and logged below:

java.lang.NoSuchFieldError: sun.net.dns.ResolverConfigurationImpl.os_searchlist at org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions$Support.getFieldID(JNIFunctions.java:1869) ~[na:na] at org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions.GetStaticFieldID(JNIFunctions.java:467) ~[na:na] at [email protected]/sun.net.dns.ResolverConfigurationImpl.init0(Native Method) ~[na:na] at [email protected]/sun.net.dns.ResolverConfigurationImpl.(ResolverConfigurationImpl.java:199) ~[na:na] at [email protected]/sun.net.dns.ResolverConfiguration.open(ResolverConfiguration.java:56) ~[demo.exe:na] at [email protected]/com.sun.jndi.dns.DnsContextFactory.serversForUrls(DnsContextFactory.java:148) ~[demo.exe:na] at [email protected]/com.sun.jndi.dns.DnsContextFactory.getContext(DnsContextFactory.java:81) ~[demo.exe:na] at [email protected]/com.sun.jndi.dns.DnsContextFactory.urlToContext(DnsContextFactory.java:119) ~[demo.exe:na] at [email protected]/com.sun.jndi.dns.DnsContextFactory.getInitialContext(DnsContextFactory.java:64) ~[demo.exe:na] at [email protected]/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:505) ~[demo.exe:na] at [email protected]/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305) ~[demo.exe:na] at [email protected]/javax.naming.InitialContext.init(InitialContext.java:236) ~[demo.exe:na] at [email protected]/javax.naming.InitialContext.(InitialContext.java:208) ~[demo.exe:na] at [email protected]/javax.naming.directory.InitialDirContext.(InitialDirContext.java:130) ~[demo.exe:na] at io.netty.resolver.dns.DirContextUtils.addNameServers(DirContextUtils.java:49) ~[na:na] at io.netty.resolver.dns.DefaultDnsServerAddressStreamProvider.(DefaultDnsServerAddressStreamProvider.java:70) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder$1.provider(DnsServerAddressStreamProviders.java:150) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder$1.(DnsServerAddressStreamProviders.java:130) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder.(DnsServerAddressStreamProviders.java:128) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders.unixDefault(DnsServerAddressStreamProviders.java:117) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders.platformDefault(DnsServerAddressStreamProviders.java:113) ~[na:na] at io.netty.resolver.dns.DnsNameResolverBuilder.(DnsNameResolverBuilder.java:71) ~[na:na] at reactor.netty.transport.NameResolverProvider.newNameResolverGroup(NameResolverProvider.java:589) ~[na:na] at reactor.netty.transport.ClientTransportConfig.lambda$getOrCreateResolver$0(ClientTransportConfig.java:274) ~[demo.exe:1.2.5] at [email protected]/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1724) ~[demo.exe:na] at reactor.netty.internal.util.MapUtils.computeIfAbsent(MapUtils.java:63) ~[na:na] at reactor.netty.transport.ClientTransportConfig.getOrCreateResolver(ClientTransportConfig.java:273) ~[demo.exe:1.2.5] at reactor.netty.transport.ClientTransport.runOn(ClientTransport.java:422) ~[demo.exe:1.2.5] at reactor.netty.tcp.TcpClient.runOn(TcpClient.java:318) ~[demo.exe:1.2.5] at reactor.netty.tcp.TcpClient.runOn(TcpClient.java:74) ~[demo.exe:1.2.5] at reactor.netty.transport.Transport.runOn(Transport.java:248) ~[demo.exe:1.2.5] at reactor.netty.tcp.TcpClient.runOn(TcpClient.java:313) ~[demo.exe:1.2.5] at io.asyncer.r2dbc.mysql.client.Client.connect(Client.java:143) ~[demo.exe:1.4.1] at io.asyncer.r2dbc.mysql.MySqlConnectionFactory.lambda$getMySqlConnection$2(MySqlConnectionFactory.java:141) ~[na:na] at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:153) ~[demo.exe:3.7.5] at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) ~[demo.exe:3.7.5] at reactor.core.publisher.Mono.subscribe(Mono.java:4560) ~[demo.exe:3.7.5] at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.run(MonoSubscribeOn.java:126) ~[demo.exe:3.7.5] at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84) ~[demo.exe:3.7.5] at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37) ~[demo.exe:3.7.5] at [email protected]/java.util.concurrent.FutureTask.run(FutureTask.java:328) ~[demo.exe:na] at [email protected]/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:309) ~[na:na] at [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1095) ~[demo.exe:na] at [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:619) ~[na:na] at [email protected]/java.lang.Thread.runWith(Thread.java:1460) ~[demo.exe:na] at [email protected]/java.lang.Thread.run(Thread.java:1447) ~[demo.exe:na] at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:832) ~[demo.exe:na] at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:808) ~[demo.exe:na]

2025-04-29T17:39:10.396+08:00 ERROR 29628 --- [demo] [ single-1] reactor.core.scheduler.Schedulers : Scheduler worker in group main failed with an uncaught exception

java.lang.NoSuchFieldError: sun.net.dns.ResolverConfigurationImpl.os_searchlist at org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions$Support.getFieldID(JNIFunctions.java:1869) ~[na:na] at org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions.GetStaticFieldID(JNIFunctions.java:467) ~[na:na] at [email protected]/sun.net.dns.ResolverConfigurationImpl.init0(Native Method) ~[na:na] at [email protected]/sun.net.dns.ResolverConfigurationImpl.(ResolverConfigurationImpl.java:199) ~[na:na] at [email protected]/sun.net.dns.ResolverConfiguration.open(ResolverConfiguration.java:56) ~[demo.exe:na] at [email protected]/com.sun.jndi.dns.DnsContextFactory.serversForUrls(DnsContextFactory.java:148) ~[demo.exe:na] at [email protected]/com.sun.jndi.dns.DnsContextFactory.getContext(DnsContextFactory.java:81) ~[demo.exe:na] at [email protected]/com.sun.jndi.dns.DnsContextFactory.urlToContext(DnsContextFactory.java:119) ~[demo.exe:na] at [email protected]/com.sun.jndi.dns.DnsContextFactory.getInitialContext(DnsContextFactory.java:64) ~[demo.exe:na] at [email protected]/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:505) ~[demo.exe:na] at [email protected]/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305) ~[demo.exe:na] at [email protected]/javax.naming.InitialContext.init(InitialContext.java:236) ~[demo.exe:na] at [email protected]/javax.naming.InitialContext.(InitialContext.java:208) ~[demo.exe:na] at [email protected]/javax.naming.directory.InitialDirContext.(InitialDirContext.java:130) ~[demo.exe:na] at io.netty.resolver.dns.DirContextUtils.addNameServers(DirContextUtils.java:49) ~[na:na] at io.netty.resolver.dns.DefaultDnsServerAddressStreamProvider.(DefaultDnsServerAddressStreamProvider.java:70) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder$1.provider(DnsServerAddressStreamProviders.java:150) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder$1.(DnsServerAddressStreamProviders.java:130) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder.(DnsServerAddressStreamProviders.java:128) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders.unixDefault(DnsServerAddressStreamProviders.java:117) ~[na:na] at io.netty.resolver.dns.DnsServerAddressStreamProviders.platformDefault(DnsServerAddressStreamProviders.java:113) ~[na:na] at io.netty.resolver.dns.DnsNameResolverBuilder.(DnsNameResolverBuilder.java:71) ~[na:na] at reactor.netty.transport.NameResolverProvider.newNameResolverGroup(NameResolverProvider.java:589) ~[na:na] at reactor.netty.transport.ClientTransportConfig.lambda$getOrCreateResolver$0(ClientTransportConfig.java:274) ~[demo.exe:1.2.5] at [email protected]/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1724) ~[demo.exe:na] at reactor.netty.internal.util.MapUtils.computeIfAbsent(MapUtils.java:63) ~[na:na] at reactor.netty.transport.ClientTransportConfig.getOrCreateResolver(ClientTransportConfig.java:273) ~[demo.exe:1.2.5] at reactor.netty.transport.ClientTransport.runOn(ClientTransport.java:422) ~[demo.exe:1.2.5] at reactor.netty.tcp.TcpClient.runOn(TcpClient.java:318) ~[demo.exe:1.2.5] at reactor.netty.tcp.TcpClient.runOn(TcpClient.java:74) ~[demo.exe:1.2.5] at reactor.netty.transport.Transport.runOn(Transport.java:248) ~[demo.exe:1.2.5] at reactor.netty.tcp.TcpClient.runOn(TcpClient.java:313) ~[demo.exe:1.2.5] at io.asyncer.r2dbc.mysql.client.Client.connect(Client.java:143) ~[demo.exe:1.4.1] at io.asyncer.r2dbc.mysql.MySqlConnectionFactory.lambda$getMySqlConnection$2(MySqlConnectionFactory.java:141) ~[na:na] at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:153) ~[demo.exe:3.7.5] at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) ~[demo.exe:3.7.5] at reactor.core.publisher.Mono.subscribe(Mono.java:4560) ~[demo.exe:3.7.5] at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.run(MonoSubscribeOn.java:126) ~[demo.exe:3.7.5] at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84) ~[demo.exe:3.7.5] at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37) ~[demo.exe:3.7.5] at [email protected]/java.util.concurrent.FutureTask.run(FutureTask.java:328) ~[demo.exe:na] at [email protected]/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:309) ~[na:na] at [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1095) ~[demo.exe:na] at [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:619) ~[na:na] at [email protected]/java.lang.Thread.runWith(Thread.java:1460) ~[demo.exe:na] at [email protected]/java.lang.Thread.run(Thread.java:1447) ~[demo.exe:na] at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:832) ~[demo.exe:na] at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:808) ~[demo.exe:na]

chiangzeon avatar Apr 29 '25 09:04 chiangzeon

A fix has recently been merged to ResolverConfigurationImpl , see https://github.com/oracle/graal/pull/10396

I assume this has been resolved, similar to https://github.com/oracle/graal/issues/9597

(but you might need an EA version of our master branch or a version built from master).

wirthi avatar Nov 13 '25 12:11 wirthi

最近已将修复程序合并到 ResolverConfigurationImpl 中,请参阅#10396

我假设这个问题已经解决,类似于#9597。

(但您可能需要我们主分支的 EA 版本或从主分支构建的版本)。

I got it,thank you

chiangzeon avatar Nov 18 '25 02:11 chiangzeon