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

Can't resolve host toolbox inside fedora-toolbox:40 container #1498

Open
0rzech opened this issue May 22, 2024 · 4 comments
Open

Can't resolve host toolbox inside fedora-toolbox:40 container #1498

0rzech opened this issue May 22, 2024 · 4 comments
Labels
1. Bug Something isn't working

Comments

@0rzech
Copy link

0rzech commented May 22, 2024

Describe the bug

Quarkus application runs fine when started inside fedora-toolbox:39 container. But inside fedora-toolbox:40, a java.net.UnknownHostException: toolbox gets thrown.

Steps how to reproduce the behaviour

  1. Create a fresh F40 toolbox container with toolbox create.
  2. Run sudo dnf install --setopt=install_weak_deps=False java-21-openjdk-devel inside container.
  3. Run quarkus dev or quarkus test inside container.
  4. See the error.

Expected behaviour

Java should not throw the aforementioned exception.

Actual behaviour

Upon starting Quarkus application, the following warning is printed and exception is thrown:

[WARNING] Failed to get hostname, using 'localhost'
java.net.UnknownHostException: toolbox: toolbox: Ta nazwa lub usługa jest nieznana
    at java.net.InetAddress.getLocalHost (InetAddress.java:1936)
    at org.eclipse.aether.internal.impl.synccontext.named.DiscriminatingNameMapper.getHostname (DiscriminatingNameMapper.java:90)
    at org.eclipse.aether.internal.impl.synccontext.named.DiscriminatingNameMapper.<init> (DiscriminatingNameMapper.java:69)
    at org.eclipse.aether.internal.impl.synccontext.named.NameMappers.discriminatingNameMapper (NameMappers.java:68)
    at org.eclipse.aether.internal.impl.synccontext.named.providers.DiscriminatingNameMapperProvider.<init> (DiscriminatingNameMapperProvider.java:39)
    at jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance (DirectConstructorHandleAccessor.java:62)
    at java.lang.reflect.Constructor.newInstanceWithCaller (Constructor.java:502)
    at java.lang.reflect.Constructor.newInstance (Constructor.java:486)
    at io.smallrye.beanbag.ConstructorSupplier.get (ConstructorSupplier.java:34)
    at io.smallrye.beanbag.Bean$Pending.get (Bean.java:125)
    at io.smallrye.beanbag.Bean.get (Bean.java:47)
    at io.smallrye.beanbag.Scope.getBean (Scope.java:237)
    at io.smallrye.beanbag.BeanResolver.get (BeanResolver.java:20)
    at io.smallrye.beanbag.BeanSupplier.lambda$transform$1 (BeanSupplier.java:42)
    at io.smallrye.beanbag.Bean$Pending.get (Bean.java:125)
    at io.smallrye.beanbag.Bean.get (Bean.java:47)
    at io.smallrye.beanbag.Scope.getAllBeansWithNames (Scope.java:145)
    at io.smallrye.beanbag.AllBeansWithNamesResolver.get (AllBeansWithNamesResolver.java:18)
    at io.smallrye.beanbag.AllBeansWithNamesResolver.get (AllBeansWithNamesResolver.java:8)
    at io.smallrye.beanbag.ConstructorSupplier.get (ConstructorSupplier.java:27)
    at io.smallrye.beanbag.Bean$Pending.get (Bean.java:125)
    at io.smallrye.beanbag.Bean.get (Bean.java:47)
    at io.smallrye.beanbag.Scope.getBean (Scope.java:237)
    at io.smallrye.beanbag.BeanResolver.get (BeanResolver.java:20)
    at io.smallrye.beanbag.ConstructorSupplier.get (ConstructorSupplier.java:27)
    at io.smallrye.beanbag.Bean$Pending.get (Bean.java:125)
    at io.smallrye.beanbag.Bean.get (Bean.java:47)
    at io.smallrye.beanbag.Scope.getBean (Scope.java:237)
    at io.smallrye.beanbag.BeanResolver.get (BeanResolver.java:20)
    at io.smallrye.beanbag.ConstructorSupplier.get (ConstructorSupplier.java:27)
    at io.smallrye.beanbag.Bean$Pending.get (Bean.java:125)
    at io.smallrye.beanbag.Bean.get (Bean.java:47)
    at io.smallrye.beanbag.Scope.getBean (Scope.java:237)
    at io.smallrye.beanbag.BeanResolver.get (BeanResolver.java:20)
    at io.smallrye.beanbag.ConstructorSupplier.get (ConstructorSupplier.java:27)
    at io.smallrye.beanbag.Bean$Pending.get (Bean.java:125)
    at io.smallrye.beanbag.Bean.get (Bean.java:47)
    at io.smallrye.beanbag.Scope.getBean (Scope.java:237)
    at io.smallrye.beanbag.Scope.requireBean (Scope.java:164)
    at io.smallrye.beanbag.BeanBag.requireBean (BeanBag.java:84)
    at io.smallrye.beanbag.maven.MavenFactory.getRepositorySystem (MavenFactory.java:167)
    at io.quarkus.bootstrap.resolver.maven.BootstrapMavenContext.initRepoSystemAndManager (BootstrapMavenContext.java:878)
    at io.quarkus.bootstrap.resolver.maven.BootstrapMavenContext.getRepositorySystem (BootstrapMavenContext.java:292)
    at io.quarkus.bootstrap.resolver.maven.MavenArtifactResolver.<init> (MavenArtifactResolver.java:114)
    at io.quarkus.maven.components.QuarkusWorkspaceProvider.createArtifactResolver (QuarkusWorkspaceProvider.java:115)
    at io.quarkus.maven.QuarkusBootstrapProvider$QuarkusMavenAppBootstrap.artifactResolver (QuarkusBootstrapProvider.java:181)
    at io.quarkus.maven.QuarkusBootstrapProvider$QuarkusMavenAppBootstrap.doBootstrap (QuarkusBootstrapProvider.java:207)
    at io.quarkus.maven.QuarkusBootstrapProvider$QuarkusMavenAppBootstrap.bootstrapApplication (QuarkusBootstrapProvider.java:351)
    at io.quarkus.maven.QuarkusBootstrapProvider.bootstrapApplication (QuarkusBootstrapProvider.java:128)
    at io.quarkus.maven.QuarkusBootstrapMojo.bootstrapApplication (QuarkusBootstrapMojo.java:294)
    at io.quarkus.maven.GenerateCodeMojo.generateCode (GenerateCodeMojo.java:79)
    at io.quarkus.maven.GenerateCodeTestsMojo.doExecute (GenerateCodeTestsMojo.java:13)
    at io.quarkus.maven.QuarkusBootstrapMojo.execute (QuarkusBootstrapMojo.java:169)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
    at java.lang.reflect.Method.invoke (Method.java:580)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
    at java.lang.reflect.Method.invoke (Method.java:580)
    at org.apache.maven.wrapper.BootstrapMainStarter.start (BootstrapMainStarter.java:52)
    at org.apache.maven.wrapper.WrapperExecutor.execute (WrapperExecutor.java:161)
    at org.apache.maven.wrapper.MavenWrapperMain.main (MavenWrapperMain.java:73)
Caused by: java.net.UnknownHostException: toolbox: Ta nazwa lub usługa jest nieznana
    at java.net.Inet6AddressImpl.lookupAllHostAddr (Native Method)
    at java.net.Inet6AddressImpl.lookupAllHostAddr (Inet6AddressImpl.java:52)
    at java.net.InetAddress$PlatformResolver.lookupByName (InetAddress.java:1211)
    at java.net.InetAddress.getAddressesFromNameService (InetAddress.java:1828)
    at java.net.InetAddress$NameServiceAddresses.get (InetAddress.java:1139)
    at java.net.InetAddress.getAllByName0 (InetAddress.java:1818)
    at java.net.InetAddress.getLocalHost (InetAddress.java:1931)
    at org.eclipse.aether.internal.impl.synccontext.named.DiscriminatingNameMapper.getHostname (DiscriminatingNameMapper.java:90)
    at org.eclipse.aether.internal.impl.synccontext.named.DiscriminatingNameMapper.<init> (DiscriminatingNameMapper.java:69)
    at org.eclipse.aether.internal.impl.synccontext.named.NameMappers.discriminatingNameMapper (NameMappers.java:68)
    at org.eclipse.aether.internal.impl.synccontext.named.providers.DiscriminatingNameMapperProvider.<init> (DiscriminatingNameMapperProvider.java:39)
    at jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance (DirectConstructorHandleAccessor.java:62)
    at java.lang.reflect.Constructor.newInstanceWithCaller (Constructor.java:502)
    at java.lang.reflect.Constructor.newInstance (Constructor.java:486)
    at io.smallrye.beanbag.ConstructorSupplier.get (ConstructorSupplier.java:34)
    at io.smallrye.beanbag.Bean$Pending.get (Bean.java:125)
    at io.smallrye.beanbag.Bean.get (Bean.java:47)
    at io.smallrye.beanbag.Scope.getBean (Scope.java:237)
    at io.smallrye.beanbag.BeanResolver.get (BeanResolver.java:20)
    at io.smallrye.beanbag.BeanSupplier.lambda$transform$1 (BeanSupplier.java:42)
    at io.smallrye.beanbag.Bean$Pending.get (Bean.java:125)
    at io.smallrye.beanbag.Bean.get (Bean.java:47)
    at io.smallrye.beanbag.Scope.getAllBeansWithNames (Scope.java:145)
    at io.smallrye.beanbag.AllBeansWithNamesResolver.get (AllBeansWithNamesResolver.java:18)
    at io.smallrye.beanbag.AllBeansWithNamesResolver.get (AllBeansWithNamesResolver.java:8)
    at io.smallrye.beanbag.ConstructorSupplier.get (ConstructorSupplier.java:27)
    at io.smallrye.beanbag.Bean$Pending.get (Bean.java:125)
    at io.smallrye.beanbag.Bean.get (Bean.java:47)
    at io.smallrye.beanbag.Scope.getBean (Scope.java:237)
    at io.smallrye.beanbag.BeanResolver.get (BeanResolver.java:20)
    at io.smallrye.beanbag.ConstructorSupplier.get (ConstructorSupplier.java:27)
    at io.smallrye.beanbag.Bean$Pending.get (Bean.java:125)
    at io.smallrye.beanbag.Bean.get (Bean.java:47)
    at io.smallrye.beanbag.Scope.getBean (Scope.java:237)
    at io.smallrye.beanbag.BeanResolver.get (BeanResolver.java:20)
    at io.smallrye.beanbag.ConstructorSupplier.get (ConstructorSupplier.java:27)
    at io.smallrye.beanbag.Bean$Pending.get (Bean.java:125)
    at io.smallrye.beanbag.Bean.get (Bean.java:47)
    at io.smallrye.beanbag.Scope.getBean (Scope.java:237)
    at io.smallrye.beanbag.BeanResolver.get (BeanResolver.java:20)
    at io.smallrye.beanbag.ConstructorSupplier.get (ConstructorSupplier.java:27)
    at io.smallrye.beanbag.Bean$Pending.get (Bean.java:125)
    at io.smallrye.beanbag.Bean.get (Bean.java:47)
    at io.smallrye.beanbag.Scope.getBean (Scope.java:237)
    at io.smallrye.beanbag.Scope.requireBean (Scope.java:164)
    at io.smallrye.beanbag.BeanBag.requireBean (BeanBag.java:84)
    at io.smallrye.beanbag.maven.MavenFactory.getRepositorySystem (MavenFactory.java:167)
    at io.quarkus.bootstrap.resolver.maven.BootstrapMavenContext.initRepoSystemAndManager (BootstrapMavenContext.java:878)
    at io.quarkus.bootstrap.resolver.maven.BootstrapMavenContext.getRepositorySystem (BootstrapMavenContext.java:292)
    at io.quarkus.bootstrap.resolver.maven.MavenArtifactResolver.<init> (MavenArtifactResolver.java:114)
    at io.quarkus.maven.components.QuarkusWorkspaceProvider.createArtifactResolver (QuarkusWorkspaceProvider.java:115)
    at io.quarkus.maven.QuarkusBootstrapProvider$QuarkusMavenAppBootstrap.artifactResolver (QuarkusBootstrapProvider.java:181)
    at io.quarkus.maven.QuarkusBootstrapProvider$QuarkusMavenAppBootstrap.doBootstrap (QuarkusBootstrapProvider.java:207)
    at io.quarkus.maven.QuarkusBootstrapProvider$QuarkusMavenAppBootstrap.bootstrapApplication (QuarkusBootstrapProvider.java:351)
    at io.quarkus.maven.QuarkusBootstrapProvider.bootstrapApplication (QuarkusBootstrapProvider.java:128)
    at io.quarkus.maven.QuarkusBootstrapMojo.bootstrapApplication (QuarkusBootstrapMojo.java:294)
    at io.quarkus.maven.GenerateCodeMojo.generateCode (GenerateCodeMojo.java:79)
    at io.quarkus.maven.GenerateCodeTestsMojo.doExecute (GenerateCodeTestsMojo.java:13)
    at io.quarkus.maven.QuarkusBootstrapMojo.execute (QuarkusBootstrapMojo.java:169)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
    at java.lang.reflect.Method.invoke (Method.java:580)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
    at java.lang.reflect.Method.invoke (Method.java:580)
    at org.apache.maven.wrapper.BootstrapMainStarter.start (BootstrapMainStarter.java:52)
    at org.apache.maven.wrapper.WrapperExecutor.execute (WrapperExecutor.java:161)
    at org.apache.maven.wrapper.MavenWrapperMain.main (MavenWrapperMain.java:73)

Screenshots

N/A

Output of toolbox --version (v0.0.90+)

toolbox version 0.0.99.5

Toolbx package info (rpm -q toolbox)

toolbox-0.0.99.5-8.fc40.x86_64

Output of podman version

Client:       Podman Engine
Version:      5.0.3
API Version:  5.0.3
Go Version:   go1.22.2
Built:        Fri May 10 02:00:00 2024
OS/Arch:      linux/amd64

Podman package info (rpm -q podman)

podman-5.0.3-1.fc40.x86_64

Info about your OS

Fedora Silverblue 40

Additional context

Running podman system reset did not help.

@0rzech 0rzech added the 1. Bug Something isn't working label May 22, 2024
@0rzech 0rzech changed the title Running quarkus in fedora-toolbox:40 container causes java.net.UnknownHostException: toolbox Running Quarkus application inside fedora-toolbox:40 container causes java.net.UnknownHostException: toolbox May 22, 2024
@bwenrich
Copy link

The mentioned steps are not enough to reproduce the exact error (requires also installing quarkus), but the java.net.UnknownHostException: toolbox suggests there is some kind of change to the network settings of the toolbox container, not specific to Java/Quarkus.

In the test below, I think we can see the same problem just by using the default programs included in the toolbox image.

fedora-toolbox:39 (works)

[user@toolbox ~]$ cat /etc/fedora-release 
Fedora release 39 (Thirty Nine)
[user@toolbox ~]$ cat /etc/hostname
toolbox[user@toolbox ~]$ 
[user@toolbox ~]$ hostname -s
toolbox
[user@toolbox ~]$ hostname -f
toolbox
[user@toolbox ~]$ curl -v http://toolbox
* processing: http://toolbox
*   Trying [fe80::fae3:66bc:a805:3bc6]:80...
*   Trying 10.97.21.241:80...

fedora-toolbox:40 (doesn't work)

[user@toolbox ~]$ cat /etc/fedora-release 
Fedora release 40 (Forty)
[user@toolbox ~]$ cat /etc/hostname 
toolbox[user@toolbox ~]$ 
[user@toolbox ~]$ hostname -s
toolbox
[user@toolbox ~]$ hostname -f
hostname: Name or service not known
[user@toolbox ~]$ curl -v http://toolbox
* Could not resolve host: toolbox
* Closing connection
curl: (6) Could not resolve host: toolbox

Environment

Fedora Linux 40.20240512.0 (Silverblue)
toolbox version 0.0.99.5
toolbox-0.0.99.5-8.fc40.x86_64

There is a difference in how fedora-toolbox:39 and fedora-toolbox:40 set their FQDN hostname, as hostname -f unexpectedly fails in 40. Then, I am using curl just to check the DNS resolution, as the toolbox doesn't have dig/nslookup/etc. Didn't notice any interesting changes to /etc/hosts or /etc/resolv.conf, but there must be something else going on.

There are a number of other Issues/PRs in this repo about DNS and hostname changes, but I'm unclear which could be related or not.

@0rzech 0rzech changed the title Running Quarkus application inside fedora-toolbox:40 container causes java.net.UnknownHostException: toolbox Can't resolve host toolbox inside fedora-toolbox:40 container May 28, 2024
@devcode11
Copy link

There are some changes to /etc/resolv.conf symlink in #1410, could they be related?
I can reproduce this issue on my system -

toolbox version 0.0.99.5
toolbox-0.0.99.5-11.fc40.x86_64
Fedora Linux 40 (Workstation Edition)

@neutronleak
Copy link

I've been having trouble with X11 programs running in Toolbox containers in Kinoite. The whole KDE desktop (wayland) hangs for several seconds when an X-application (especially Wrye Bash, https://github.com/wrye-bash/wrye-bash, but also vim) opens dialogs or context menus.

Running "sudo hostname localhost" in the toolbox container resolved the issue and X-applications seem to run fine now without hanging the rest of the desktop.

@yorickpeterse
Copy link

This issue also seems to result in commands such as sudo dnf install ... taking quite a bit longer than expected, likely due to it failing to resolve the hostname. #1086 has been open for little over two years, but it's seemingly going nowhere.

A workaround is to add 127.0.0.1 toolbox to /etc/hosts on the host, then restart the host network, and restart the container (or recreate it if possible, for good measure). At this point the hostname should resolve just fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1. Bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants