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

NullPointerException when queried for AAAA/IPv6 record #474

Closed
sh3bang opened this issue Jun 16, 2024 · 2 comments
Closed

NullPointerException when queried for AAAA/IPv6 record #474

sh3bang opened this issue Jun 16, 2024 · 2 comments
Labels
bug confirmed Unexpected behavior (bug) which was reproduced by repo owners

Comments

@sh3bang
Copy link

sh3bang commented Jun 16, 2024

If your docker host are reachable by IPv6 and IPv4 (Dual-Stack) then DPS will also be queried for AAAA and A record if configured as primary DNS proxy. But without IPv6 support within container environment DPS will fail with noisy NullPointerException.

Query A record only:

[paul@manjaro ~]$ nslookup
> server 10.5.0.2
Default server: 10.5.0.2
Address: 10.5.0.2#53
> set type=A
> nginx.docker
Server: 10.5.0.2
Address: 10.5.0.2#53

Non-authoritative answer:
Name: nginx.docker
Address: 10.5.0.3

Query for A and AAAA

[paul@manjaro ~]$ nslookup
> server 10.5.0.2
Default server: 10.5.0.2
Address: 10.5.0.2#53
> nginx.docker
Server: 10.5.0.2
Address: 10.5.0.2#53

Non-authoritative answer:
Name: nginx.docker
Address: 10.5.0.3
** server can't find nginx.docker: NXDOMAIN

Exception log:

[paul@manjaro ~]$ docker logs dps -f
13:49:55.808 [main ] DEB c.m.d.config.dataprovider.ConfigDAOJson l=38 m=find configPath=/app/conf/config.json
13:49:55.825 [main ] INF c.m.d.s.d.a.DpsDockerEnvironmentSetupService l=32 m=setup status=binding-docker-events, connectedToDocker=true
13:49:55.825 [main ] INF c.m.d.s.d.a.DpsDockerEnvironmentSetupService l=44 m=setupNetwork status=dpsNetwork, active=false
13:49:55.825 [main ] INF c.m.d.s.docker.application.DpsContainerService l=102 m=tRunningContainersToDpsNetwork status=autoConnectDpsNetworkDisabled, dpsNetwork=false, dpsNetworkAutoConnect=false
13:49:55.825 [main ] INF c.m.d.solver.docker.entrypoint.EventListener l=32 m=onStart status=containerAutoConnectToDpsNetworkDisabled
13:49:55.825 [main ] INF com.mageddo.dnsserver.UDPServerPool l=31 m=start Starting UDP server, addresses=/0.0.0.0:53
13:49:55.825 [main ] INF c.mageddo.dnsproxyserver.server.dns.ServerStarter l=30 m=start status=startingDnsServer, protocol=UDP_TCP, port=53
13:49:55.825 [Thread-4 ] INF com.mageddo.dnsserver.TCPServer l=50 m=start0 status=tcpServerStarting, port=53
13:49:55.826 [main ] INF com.mageddo.http.WebServer l=134 m=start status=startingWebServer, port=5380
13:50:00.877 [Thread-1 ] INF c.m.d.dnsconfigurator.DnsConfigurators l=113 m=getInstance0 usingDnsConfigurator=DnsConfiguratorLinux
13:50:00.877 [Thread-1 ] INF c.m.d.dnsconfigurator.linux.DnsConfiguratorLinux l=91 m=lambda$findBestConfFile$0 status=noValidConfFile, file=/host/etc/systemd/resolved.conf
13:50:00.877 [Thread-1 ] INF c.m.d.dnsconfigurator.linux.DnsConfiguratorLinux l=91 m=lambda$findBestConfFile$0 status=noValidConfFile, file=/host/etc/resolv.conf
13:50:00.877 [Thread-1 ] INF c.m.d.dnsconfigurator.linux.DnsConfiguratorLinux l=91 m=lambda$findBestConfFile$0 status=noValidConfFile, file=/etc/systemd/resolved.conf
13:50:00.877 [Thread-1 ] INF c.m.d.dnsconfigurator.linux.DnsConfiguratorLinux l=122 m=init status=using, configFile=ResolvFile(path=/etc/resolv.conf, type=RESOLVCONF)
13:53:55.373 [Thread-17 ] WAR c.m.d.server.dns.RequestHandlerDefault l=101 m=solveAndSummarizeHandlingError status=solverFailed, currentSolverTime=8, totalTime=8, solver=SolverDocker, query=query=AAAA:nginx.docker, eClass=NullPointerException, msg=null
java.lang.NullPointerException: null
at com.mageddo.dnsproxyserver.solver.docker.dataprovider.mapper.NetworkMapper.findGatewayIp(NetworkMapper.java:39)
at com.mageddo.dnsproxyserver.solver.docker.dataprovider.mapper.NetworkMapper.of(NetworkMapper.java:17)
at java.base@19.0.2/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base@19.0.2/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base@19.0.2/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base@19.0.2/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base@19.0.2/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
at java.base@19.0.2/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
at java.base@19.0.2/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
at java.base@19.0.2/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
at java.base@19.0.2/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
at com.mageddo.dnsproxyserver.solver.docker.dataprovider.DockerDAODefault.findNetworks(DockerDAODefault.java:53)
at com.mageddo.dnsproxyserver.solver.docker.dataprovider.DockerDAODefault.findBestNetwork(DockerDAODefault.java:39)
at com.mageddo.dnsproxyserver.solver.docker.dataprovider.DockerDAODefault.findHostMachineIp(DockerDAODefault.java:35)
at com.mageddo.dnsproxyserver.solver.docker.application.ContainerSolvingService.lambda$buildHostMachineIpWhenActive$6(ContainerSolvingService.java:131)
at com.mageddo.dnsproxyserver.solver.docker.application.ContainerSolvingService.buildHostMachineIpWhenActive(ContainerSolvingService.java:132)
at com.mageddo.dnsproxyserver.solver.docker.application.ContainerSolvingService.lambda$findSecondaryIp$5(ContainerSolvingService.java:114)
at java.base@19.0.2/java.util.Optional.orElseGet(Optional.java:364)
at com.mageddo.dnsproxyserver.solver.docker.application.ContainerSolvingService.findSecondaryIp(ContainerSolvingService.java:114)
at com.mageddo.dnsproxyserver.solver.docker.application.ContainerSolvingService.lambda$findBestIpMatch$2(ContainerSolvingService.java:66)
at java.base@19.0.2/java.util.Optional.orElseGet(Optional.java:364)
at com.mageddo.dnsproxyserver.solver.docker.application.ContainerSolvingService.findBestIpMatch(ContainerSolvingService.java:66)
at com.mageddo.dnsproxyserver.solver.docker.application.ContainerSolvingService.lambda$findBestMatch$0(ContainerSolvingService.java:42)
at java.base@19.0.2/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base@19.0.2/java.util.AbstractList$RandomAccessSpliterator.tryAdvance(AbstractList.java:708)
at java.base@19.0.2/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
at java.base@19.0.2/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
at java.base@19.0.2/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
at java.base@19.0.2/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base@19.0.2/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
at java.base@19.0.2/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base@19.0.2/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
at com.mageddo.dnsproxyserver.solver.docker.application.ContainerSolvingService.findBestMatch(ContainerSolvingService.java:44)
at com.mageddo.dnsproxyserver.solver.SolverDocker.lambda$handle$0(SolverDocker.java:40)
at com.mageddo.dnsproxyserver.solver.HostnameMatcher.match(HostnameMatcher.java:22)
at com.mageddo.dnsproxyserver.solver.SolverDocker.handle(SolverDocker.java:39)
at com.mageddo.dnsproxyserver.server.dns.RequestHandlerDefault.solveAndSummarize(RequestHandlerDefault.java:115)
at com.mageddo.dnsproxyserver.server.dns.RequestHandlerDefault.solveAndSummarizeHandlingError(RequestHandlerDefault.java:99)
at com.mageddo.dnsproxyserver.server.dns.RequestHandlerDefault.solve(RequestHandlerDefault.java:82)
at com.mageddo.dnsproxyserver.server.dns.RequestHandlerDefault.solveFixingCacheTTL(RequestHandlerDefault.java:73)
at com.mageddo.dnsproxyserver.solver.SolverCache.lambda$handleRes$0(SolverCache.java:38)
at com.mageddo.commons.caching.LruTTLCache.lambda$computeIfAbsentWithTTL$1(LruTTLCache.java:94)
at java.base@19.0.2/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916)
at com.mageddo.commons.caching.LruTTLCache.lambda$computeIfAbsentWithTTL$2(LruTTLCache.java:88)
at java.base@19.0.2/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916)
at com.mageddo.commons.caching.LruTTLCache.computeIfAbsentWithTTL(LruTTLCache.java:86)
at com.mageddo.dnsproxyserver.solver.SolverCache.handleRes(SolverCache.java:36)
at com.mageddo.dnsproxyserver.solver.SolverCache.handle(SolverCache.java:31)
at com.mageddo.dnsproxyserver.server.dns.RequestHandlerDefault.solveCaching(RequestHandlerDefault.java:66)
at com.mageddo.dnsproxyserver.server.dns.RequestHandlerDefault.handle(RequestHandlerDefault.java:54)
at com.mageddo.dnsserver.UDPServer.handle(UDPServer.java:55)
at com.mageddo.dnsserver.UDPServer.lambda$start0$0(UDPServer.java:43)
at java.base@19.0.2/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:577)
at java.base@19.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base@19.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base@19.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base@19.0.2/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.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:203)
13:53:55.373 [Thread-17 ] WAR c.m.d.server.dns.RequestHandlerDefault l=56 m=handle status=solverFailed, totalTime=8, eClass=NullPointerException, msg=null
java.lang.NullPointerException: null
at com.mageddo.dnsproxyserver.server.dns.RequestHandlerDefault.solve(RequestHandlerDefault.java:83)
at com.mageddo.dnsproxyserver.server.dns.RequestHandlerDefault.solveFixingCacheTTL(RequestHandlerDefault.java:73)
at com.mageddo.dnsproxyserver.solver.SolverCache.lambda$handleRes$0(SolverCache.java:38)
at com.mageddo.commons.caching.LruTTLCache.lambda$computeIfAbsentWithTTL$1(LruTTLCache.java:94)
at java.base@19.0.2/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916)
at com.mageddo.commons.caching.LruTTLCache.lambda$computeIfAbsentWithTTL$2(LruTTLCache.java:88)
at java.base@19.0.2/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916)
at com.mageddo.commons.caching.LruTTLCache.computeIfAbsentWithTTL(LruTTLCache.java:86)
at com.mageddo.dnsproxyserver.solver.SolverCache.handleRes(SolverCache.java:36)
at com.mageddo.dnsproxyserver.solver.SolverCache.handle(SolverCache.java:31)
at com.mageddo.dnsproxyserver.server.dns.RequestHandlerDefault.solveCaching(RequestHandlerDefault.java:66)
at com.mageddo.dnsproxyserver.server.dns.RequestHandlerDefault.handle(RequestHandlerDefault.java:54)
at com.mageddo.dnsserver.UDPServer.handle(UDPServer.java:55)
at com.mageddo.dnsserver.UDPServer.lambda$start0$0(UDPServer.java:43)
at java.base@19.0.2/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:577)
at java.base@19.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base@19.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base@19.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base@19.0.2/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.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:203)

@mageddo mageddo added bug confirmed Unexpected behavior (bug) which was reproduced by repo owners labels Jun 17, 2024
mageddo added a commit that referenced this issue Jun 17, 2024
* logging net name

* leading with no ipam config and testing

* dont use networks without ip

* release notes

* [Gradle Release Plugin] - new version commit:  '3.19.5-snapshot'.
@mageddo
Copy link
Owner

mageddo commented Jun 17, 2024

Hey @sh3bang , thanks for your report, a fix was submmited, see the summary:

Fixing error when fallback to host machine IP, Network mapper fails when the mapped networks hasn't an IPAM config, it has more chances to happen on IPV6 query solving.

I will release it in the next minutes, I will be glad if you can check if it fixes your usecase.

@sh3bang
Copy link
Author

sh3bang commented Jun 19, 2024

@mageddo with 3.19.5-snapshot exception is gone 👍

@mageddo mageddo closed this as completed Jun 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug confirmed Unexpected behavior (bug) which was reproduced by repo owners
Projects
None yet
Development

No branches or pull requests

2 participants