[ 
https://issues.apache.org/jira/browse/ARTEMIS-4654?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lauri Kimmel updated ARTEMIS-4654:
----------------------------------
    Description: 
Underscore in hostname produced unexpected error message. See details below.

It's problematic since
 # error message is misleading
 # hostname with underscore is valid for certain setups. I.e in Docker compose 
/ swarm environments.
 # underscore in hostname works for different other client libraries. Tested 
with Postgres, InfluxDB, Redis 

—

Code

 
{code:java}
ActiveMQConnectionFactory factory = new 
ActiveMQConnectionFactory("tcp://local_host:61616");
factory.createConnection();
{code}
produces output
{code:java}
[org.apa.act.art.cor.client] (main) AMQ212007: connector.create or 
connectorFactory.createConnector should never throw an exception, 
implementation is badly behaved, but we will deal with it anyway.: 
java.lang.IllegalArgumentException: port out of range:-1
    at 
java.base/java.net.InetSocketAddress.checkPort(InetSocketAddress.java:152)
    at java.base/java.net.InetSocketAddress.<init>(InetSocketAddress.java:233)
    at 
org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector.createConnection(NettyConnector.java:874)
    at 
org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector.createConnection(NettyConnector.java:866)
    at 
org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector.createConnection(NettyConnector.java:848)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.openTransportConnection(ClientSessionFactoryImpl.java:1212)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.createTransportConnection(ClientSessionFactoryImpl.java:1333)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.createTransportConnection(ClientSessionFactoryImpl.java:1253)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.establishNewConnection(ClientSessionFactoryImpl.java:1496)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.getConnection(ClientSessionFactoryImpl.java:1074)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.getConnectionWithRetry(ClientSessionFactoryImpl.java:959)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connect(ClientSessionFactoryImpl.java:279)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connect(ClientSessionFactoryImpl.java:295)
    at 
org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:709)
    at 
org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnectionInternal(ActiveMQConnectionFactory.java:865)
    at 
org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:284)
    at 
org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:279)
...
{code}
while code 
{code:java}
ActiveMQConnectionFactory factory = new 
ActiveMQConnectionFactory("tcp://local-host:61616");
factory.createConnection();
{code}
produces output
{code:java}
ERROR [org.apa.act.art.cor.client] (main) AMQ214016: Failed to create netty 
connection: java.net.UnknownHostException: local-host
    at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:801)
    at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1509)
    at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1367)
    at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1301)
    at java.base/java.net.InetAddress.getByName(InetAddress.java:1251)
    at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)
    at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)
    at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
    at io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)
    at 
io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)
    at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)
    at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)
    at 
io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)
    at 
io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)
    at 
io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)
    at io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)
    at io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)
    at io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)
    at io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)
    at 
io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
    at 
io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)
    at 
io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
    at 
io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
    at 
io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:625)
    at 
io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:105)
    at 
io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)
    at 
io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:990)
    at 
io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:516)
    at 
io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:429)
    at 
io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:486)
    at 
io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
    at 
io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
    at 
io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:406)
    at 
io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at 
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118){code}
 

  was:
Underscore in hostname produced unexpected error message. See details below.

It's problematic since
 # error message is misleading
 # hostname with underscore is valid for certain setups. I.e in Docker compose 
/ swarm environments.
 # underscore in hostname works for different other client libraries. Tested 
with Postgres, InfluxDB, Redis 

---

Code

 
{code:java}
ActiveMQConnectionFactory factory = new 
ActiveMQConnectionFactory("tcp://local_host:61616");
factory.createConnection();
{code}
produces output
{code:java}
[org.apa.act.art.cor.client] (main) AMQ212007: connector.create or 
connectorFactory.createConnector should never throw an exception, 
implementation is badly behaved, but we will deal with it anyway.: 
java.lang.IllegalArgumentException: port out of range:-1
    at 
java.base/java.net.InetSocketAddress.checkPort(InetSocketAddress.java:152)
    at java.base/java.net.InetSocketAddress.<init>(InetSocketAddress.java:233)
    at 
org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector.createConnection(NettyConnector.java:874)
    at 
org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector.createConnection(NettyConnector.java:866)
    at 
org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector.createConnection(NettyConnector.java:848)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.openTransportConnection(ClientSessionFactoryImpl.java:1212)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.createTransportConnection(ClientSessionFactoryImpl.java:1333)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.createTransportConnection(ClientSessionFactoryImpl.java:1253)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.establishNewConnection(ClientSessionFactoryImpl.java:1496)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.getConnection(ClientSessionFactoryImpl.java:1074)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.getConnectionWithRetry(ClientSessionFactoryImpl.java:959)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connect(ClientSessionFactoryImpl.java:279)
    at 
org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connect(ClientSessionFactoryImpl.java:295)
    at 
org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:709)
    at 
org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnectionInternal(ActiveMQConnectionFactory.java:865)
    at 
org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:284)
    at 
org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:279)
...
{code}
while code 
{code:java}
ActiveMQConnectionFactory factory = new 
ActiveMQConnectionFactory("tcp://local-host:61616");
factory.createConnection();
{code}
produces output

 
{code:java}
ERROR [org.apa.act.art.cor.client] (main) AMQ214016: Failed to create netty 
connection: java.net.UnknownHostException: local-host
    at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:801)
    at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1509)
    at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1367)
    at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1301)
    at java.base/java.net.InetAddress.getByName(InetAddress.java:1251)
    at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)
    at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)
    at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
    at io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)
    at 
io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)
    at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)
    at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)
    at 
io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)
    at 
io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)
    at 
io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)
    at io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)
    at io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)
    at io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)
    at io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)
    at 
io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
    at 
io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)
    at 
io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
    at 
io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
    at 
io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:625)
    at 
io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:105)
    at 
io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)
    at 
io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:990)
    at 
io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:516)
    at 
io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:429)
    at 
io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:486)
    at 
io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
    at 
io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
    at 
io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:406)
    at 
io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at 
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118){code}
 


> Misleading error message while connecting to host with underscore
> -----------------------------------------------------------------
>
>                 Key: ARTEMIS-4654
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-4654
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Configuration
>    Affects Versions: 2.31.0
>            Reporter: Lauri Kimmel
>            Priority: Major
>
> Underscore in hostname produced unexpected error message. See details below.
> It's problematic since
>  # error message is misleading
>  # hostname with underscore is valid for certain setups. I.e in Docker 
> compose / swarm environments.
>  # underscore in hostname works for different other client libraries. Tested 
> with Postgres, InfluxDB, Redis 
> —
> Code
>  
> {code:java}
> ActiveMQConnectionFactory factory = new 
> ActiveMQConnectionFactory("tcp://local_host:61616");
> factory.createConnection();
> {code}
> produces output
> {code:java}
> [org.apa.act.art.cor.client] (main) AMQ212007: connector.create or 
> connectorFactory.createConnector should never throw an exception, 
> implementation is badly behaved, but we will deal with it anyway.: 
> java.lang.IllegalArgumentException: port out of range:-1
>     at 
> java.base/java.net.InetSocketAddress.checkPort(InetSocketAddress.java:152)
>     at java.base/java.net.InetSocketAddress.<init>(InetSocketAddress.java:233)
>     at 
> org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector.createConnection(NettyConnector.java:874)
>     at 
> org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector.createConnection(NettyConnector.java:866)
>     at 
> org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector.createConnection(NettyConnector.java:848)
>     at 
> org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.openTransportConnection(ClientSessionFactoryImpl.java:1212)
>     at 
> org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.createTransportConnection(ClientSessionFactoryImpl.java:1333)
>     at 
> org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.createTransportConnection(ClientSessionFactoryImpl.java:1253)
>     at 
> org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.establishNewConnection(ClientSessionFactoryImpl.java:1496)
>     at 
> org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.getConnection(ClientSessionFactoryImpl.java:1074)
>     at 
> org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.getConnectionWithRetry(ClientSessionFactoryImpl.java:959)
>     at 
> org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connect(ClientSessionFactoryImpl.java:279)
>     at 
> org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connect(ClientSessionFactoryImpl.java:295)
>     at 
> org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:709)
>     at 
> org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnectionInternal(ActiveMQConnectionFactory.java:865)
>     at 
> org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:284)
>     at 
> org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:279)
> ...
> {code}
> while code 
> {code:java}
> ActiveMQConnectionFactory factory = new 
> ActiveMQConnectionFactory("tcp://local-host:61616");
> factory.createConnection();
> {code}
> produces output
> {code:java}
> ERROR [org.apa.act.art.cor.client] (main) AMQ214016: Failed to create netty 
> connection: java.net.UnknownHostException: local-host
>     at 
> java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:801)
>     at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1509)
>     at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1367)
>     at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1301)
>     at java.base/java.net.InetAddress.getByName(InetAddress.java:1251)
>     at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)
>     at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)
>     at 
> java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
>     at io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)
>     at 
> io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)
>     at 
> io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)
>     at 
> io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)
>     at 
> io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)
>     at 
> io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)
>     at 
> io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)
>     at io.netty.bootstrap.Bootstrap.doResolveAndConnect0(Bootstrap.java:206)
>     at io.netty.bootstrap.Bootstrap.access$000(Bootstrap.java:46)
>     at io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:180)
>     at io.netty.bootstrap.Bootstrap$1.operationComplete(Bootstrap.java:166)
>     at 
> io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
>     at 
> io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)
>     at 
> io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
>     at 
> io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
>     at 
> io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:625)
>     at 
> io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:105)
>     at 
> io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)
>     at 
> io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:990)
>     at 
> io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:516)
>     at 
> io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:429)
>     at 
> io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:486)
>     at 
> io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
>     at 
> io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
>     at 
> io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
>     at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:406)
>     at 
> io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
>     at 
> io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
>     at 
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118){code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to