arrowhead-f / arrowhead-kalix-examples

Arrowhead Kalix Examples
Eclipse Public License 2.0
0 stars 5 forks source link

Changing System IP #6

Open InRiPa opened 3 years ago

InRiPa commented 3 years ago

HI,

how can I change the IP address of for example a provider?

I believe, this has to be done during the new ArSystem.Builder()

I tried changing it, using .localAddress() and .localHostnamePort("localhost", 9001):

e.g:

InetAddress addr = InetAddress.getByName("127.0.0.1");
final var system = new ArSystem.Builder()
                .identity(identity)
                .trustStore(trustStore)
                .localPort(9001)
                .localAddress(addr)
                .plugins(HttpJsonCloudPlugin.joinViaServiceRegistryAt(srSocketAddress))
                .build();

But this results in following exception:

[user@PC]$ java -cp target/echo-cloud-0.5.0-jar-with-dependencies.jar se.arkalix.examples.EchoProvider target/system.echo_provider.p12 target/truststore.p12 ahfserver.com 8443

Dec 02, 2020 3:05:44 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached <init>
INFO: HTTP/JSON cloud plugin attached to "echo_provider"
Echo provider running ...
Dec 02, 2020 3:05:45 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached requestAuthorizationKey
INFO: HTTP/JSON cloud plugin requesting authorization key ...
Dec 02, 2020 3:05:45 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached requestServiceDiscovery
INFO: HTTP/JSON cloud plugin connecting to "service_registry" system at ahfserver/192.168.168.168:8443 ...
Dec 02, 2020 3:05:45 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached lambda$requestServiceDiscovery$12
SEVERE: HTTP/JSON cloud plugin failed to connect to "service_registry" system at ahfserver/192.168.168.168:8443
io.netty.channel.AbstractChannel$AnnotatedConnectException: connect(..) failed: Invalid argument: ahfserver/192.168.168.168:8443
Caused by: java.net.ConnectException: connect(..) failed: Invalid argument
    at io.netty.channel.unix.Errors.throwConnectException(Errors.java:124)
    at io.netty.channel.unix.Socket.connect(Socket.java:239)
    at io.netty.channel.epoll.AbstractEpollChannel.doConnect0(AbstractEpollChannel.java:735)
    at io.netty.channel.epoll.AbstractEpollChannel.doConnect(AbstractEpollChannel.java:720)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.connect(AbstractEpollChannel.java:562)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.connect(DefaultChannelPipeline.java:1342)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:548)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:533)
    at io.netty.handler.ssl.SslHandler.connect(SslHandler.java:726)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:548)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:533)
    at io.netty.handler.logging.LoggingHandler.connect(LoggingHandler.java:231)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:548)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:533)
    at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.connect(CombinedChannelDuplexHandler.java:495)
    at io.netty.channel.ChannelOutboundHandlerAdapter.connect(ChannelOutboundHandlerAdapter.java:51)
    at io.netty.channel.CombinedChannelDuplexHandler.connect(CombinedChannelDuplexHandler.java:296)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:548)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:533)
    at io.netty.channel.DefaultChannelPipeline.connect(DefaultChannelPipeline.java:984)
    at io.netty.channel.AbstractChannel.connect(AbstractChannel.java:258)
    at io.netty.bootstrap.Bootstrap$3.run(Bootstrap.java:252)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:387)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:832)

Dec 02, 2020 3:05:45 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached lambda$requestAuthorizationKey$15
WARNING: Failed to retrieve authorization key
io.netty.channel.AbstractChannel$AnnotatedConnectException: connect(..) failed: Invalid argument: ahfserver/192.168.168.168:8443
Caused by: java.net.ConnectException: connect(..) failed: Invalid argument
    at io.netty.channel.unix.Errors.throwConnectException(Errors.java:124)
    at io.netty.channel.unix.Socket.connect(Socket.java:239)
    at io.netty.channel.epoll.AbstractEpollChannel.doConnect0(AbstractEpollChannel.java:735)
    at io.netty.channel.epoll.AbstractEpollChannel.doConnect(AbstractEpollChannel.java:720)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.connect(AbstractEpollChannel.java:562)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.connect(DefaultChannelPipeline.java:1342)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:548)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:533)
    at io.netty.handler.ssl.SslHandler.connect(SslHandler.java:726)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:548)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:533)
    at io.netty.handler.logging.LoggingHandler.connect(LoggingHandler.java:231)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:548)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:533)
    at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.connect(CombinedChannelDuplexHandler.java:495)
    at io.netty.channel.ChannelOutboundHandlerAdapter.connect(ChannelOutboundHandlerAdapter.java:51)
    at io.netty.channel.CombinedChannelDuplexHandler.connect(CombinedChannelDuplexHandler.java:296)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:548)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:533)
    at io.netty.channel.DefaultChannelPipeline.connect(DefaultChannelPipeline.java:984)
    at io.netty.channel.AbstractChannel.connect(AbstractChannel.java:258)
    at io.netty.bootstrap.Bootstrap$3.run(Bootstrap.java:252)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:387)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:832)

io.netty.channel.AbstractChannel$AnnotatedConnectException: connect(..) failed: Invalid argument: ahfserver/192.168.168.168:8443
Caused by: java.net.ConnectException: connect(..) failed: Invalid argument
    at io.netty.channel.unix.Errors.throwConnectException(Errors.java:124)
    at io.netty.channel.unix.Socket.connect(Socket.java:239)
    at io.netty.channel.epoll.AbstractEpollChannel.doConnect0(AbstractEpollChannel.java:735)
    at io.netty.channel.epoll.AbstractEpollChannel.doConnect(AbstractEpollChannel.java:720)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.connect(AbstractEpollChannel.java:562)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.connect(DefaultChannelPipeline.java:1342)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:548)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:533)
    at io.netty.handler.ssl.SslHandler.connect(SslHandler.java:726)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:548)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:533)
    at io.netty.handler.logging.LoggingHandler.connect(LoggingHandler.java:231)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:548)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:533)
    at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.connect(CombinedChannelDuplexHandler.java:495)
    at io.netty.channel.ChannelOutboundHandlerAdapter.connect(ChannelOutboundHandlerAdapter.java:51)
    at io.netty.channel.CombinedChannelDuplexHandler.connect(CombinedChannelDuplexHandler.java:296)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:548)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:533)
    at io.netty.channel.DefaultChannelPipeline.connect(DefaultChannelPipeline.java:984)
    at io.netty.channel.AbstractChannel.connect(AbstractChannel.java:258)
    at io.netty.bootstrap.Bootstrap$3.run(Bootstrap.java:252)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:387)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:832)

Thanks a lot for your help!

emanuelpalm commented 3 years ago

Hey @InRiPa!

That's because the only IP addresses you can choose from with Kalix are the ones already assigned to the network interfaces (cards) of your computer. The documentation might not reveal a lot of details about it, but it does mention it (see https://arkalix.se/javadocs/kalix-base/se/arkalix/ArSystem.Builder.html#localAddress(java.net.InetAddress), for example). In other words, the point of #localAddress() is not to decide your IP address, it is to select a particular network interface on your computer you want use.

Normally, you don't specify a local network address at all. What happens then is that the special "wildcard" network interface of your computer is used (symbolized by the local network interface with IP address 0.0.0.0), which can make requests and accept incoming connections via all network interfaces on your computer.

Use whatever DHCP server you have on your local network to change your IP address, or make a static IP address assignment via the operating system.

InRiPa commented 3 years ago

Hi, thanks for your reply! Unfortunately, I still can't fix my problem. I made a short sketch about my setup:

kalix-example-setup

The current situation is:

DELETE /example/runtime result: se.arkalix.query.ServiceNotFoundException: No service with the following properties could be resolved: name=Optional[kalix-example-provider-service], isSecure=true, encodings=[JSON], transports=[HTTP] at se.arkalix.query.ServiceQuery.lambda$resolveOne$4(ServiceQuery.java:451) at java.base/java.util.Optional.orElseGet(Optional.java:362) at se.arkalix.query.ServiceQuery.lambda$resolveOne$5(ServiceQuery.java:451) at se.arkalix.util.concurrent.Future$7.lambda$onResult$0(Future.java:601) at se.arkalix.util.concurrent.Future$1.lambda$onResult$0(Future.java:268) at se.arkalix.util.concurrent.Future$4.lambda$onResult$0(Future.java:428) at se.arkalix.util.concurrent.Future$1.lambda$onResult$0(Future.java:268) at se.arkalix.util.concurrent.Future$4.lambda$onResult$0(Future.java:428) at se.arkalix.util.concurrent.FutureSuccess.onResult(FutureSuccess.java:34) at se.arkalix.util.concurrent.Future$12.lambda$onResult$0(Future.java:957) at se.arkalix.util.concurrent.FutureSuccess.onResult(FutureSuccess.java:34) at se.arkalix.util.concurrent.Future$9.lambda$onResult$0(Future.java:716) at se.arkalix.internal.util.concurrent.FutureCompletion.complete(FutureCompletion.java:31) at se.arkalix.util.concurrent.FutureAnnouncement.lambda$new$0(FutureAnnouncement.java:37) at se.arkalix.util.concurrent.Future$3.lambda$onResult$0(Future.java:368) at se.arkalix.util.concurrent.Future$4.lambda$onResult$0(Future.java:428) at se.arkalix.internal.net.NettyBodyIncoming.complete(NettyBodyIncoming.java:67) at se.arkalix.internal.net.NettyBodyIncoming$Buffered.finish(NettyBodyIncoming.java:121) at se.arkalix.internal.net.NettyMessageIncoming.finish(NettyMessageIncoming.java:63) at se.arkalix.internal.net.http.client.NettyHttpClientConnection.readContent(NettyHttpClientConnection.java:159) at se.arkalix.internal.net.http.client.NettyHttpClientConnection.channelRead0(NettyHttpClientConnection.java:129) at se.arkalix.internal.net.http.client.NettyHttpClientConnection.channelRead0(NettyHttpClientConnection.java:43) at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.logging.LoggingHandler.channelRead(LoggingHandler.java:271) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1526) at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1275) at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1322) at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501) at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:795) at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at java.base/java.lang.Thread.run(Thread.java:832)

GET /example/pings/32 failed: se.arkalix.query.ServiceNotFoundException: No service with the following properties could be resolved: name=Optional[kalix-example-provider-service], isSecure=true, encodings=[JSON], transports=[HTTP] at se.arkalix.query.ServiceQuery.lambda$resolveOne$4(ServiceQuery.java:451) at java.base/java.util.Optional.orElseGet(Optional.java:362) at se.arkalix.query.ServiceQuery.lambda$resolveOne$5(ServiceQuery.java:451) at se.arkalix.util.concurrent.Future$7.lambda$onResult$0(Future.java:601) at se.arkalix.util.concurrent.Future$1.lambda$onResult$0(Future.java:268) at se.arkalix.util.concurrent.Future$4.lambda$onResult$0(Future.java:428) at se.arkalix.util.concurrent.Future$1.lambda$onResult$0(Future.java:268) at se.arkalix.util.concurrent.Future$4.lambda$onResult$0(Future.java:428) at se.arkalix.util.concurrent.FutureSuccess.onResult(FutureSuccess.java:34) at se.arkalix.util.concurrent.Future$12.lambda$onResult$0(Future.java:957) at se.arkalix.util.concurrent.FutureSuccess.onResult(FutureSuccess.java:34) at se.arkalix.util.concurrent.Future$9.lambda$onResult$0(Future.java:716) at se.arkalix.internal.util.concurrent.FutureCompletion.complete(FutureCompletion.java:31) at se.arkalix.util.concurrent.FutureAnnouncement.lambda$new$0(FutureAnnouncement.java:37) at se.arkalix.util.concurrent.Future$3.lambda$onResult$0(Future.java:368) at se.arkalix.util.concurrent.Future$4.lambda$onResult$0(Future.java:428) at se.arkalix.internal.net.NettyBodyIncoming.complete(NettyBodyIncoming.java:67) at se.arkalix.internal.net.NettyBodyIncoming$Buffered.finish(NettyBodyIncoming.java:121) at se.arkalix.internal.net.NettyMessageIncoming.finish(NettyMessageIncoming.java:63) at se.arkalix.internal.net.http.client.NettyHttpClientConnection.readContent(NettyHttpClientConnection.java:159) at se.arkalix.internal.net.http.client.NettyHttpClientConnection.channelRead0(NettyHttpClientConnection.java:129) at se.arkalix.internal.net.http.client.NettyHttpClientConnection.channelRead0(NettyHttpClientConnection.java:43) at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.logging.LoggingHandler.channelRead(LoggingHandler.java:271) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1526) at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1275) at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1322) at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501) at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:795) at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at java.base/java.lang.Thread.run(Thread.java:832)



I'm not sure if the error is based on the thing, that the provider and consumer both use `0.0.0.0` to provide their service. 
Could that be the issue, or is it more likely a AuthRule issue?
emanuelpalm commented 3 years ago

@InRiPa Hey! Sorry for responding this late! For some reason I never noticed any notification. I saw your issue in an AHF report that was e-mailed to me earlier today.

This issue is not related to IP addresses, but to orchestration and/or authorization rules. If all authorization rules have been set up properly, then the issue is that there are no corresponding orchestration rules. If knowing that isn't helpful enough, just tell me and I'll try to guide you through it.

emanuelpalm commented 3 years ago

I'm not sure if the error is based on the thing, that the provider and consumer both use 0.0.0.0 to provide their service. Could that be the issue, or is it more likely a AuthRule issue?

Yes indeed, 0.0.0.0 should never appear as an address in the service registry. I'll see if I can patch arrowhead-kalix to automatically translate such. @InRiPa Did you have any suggestions on how such translations would be performed? :)

InRiPa commented 3 years ago

A little update. I checked out the latest version from the master branch. Opened the example and switched certificates to the one's needed for my local ahf (remote) instance. I adjusted the Echo Provider with adding the provider endpoint statement:

final var system = new ArSystem.Builder()
                .identity(identity)
                .trustStore(trustStore)
                .localHostnamePort("<eth ip>", 9001) // 
                .plugins(HttpJsonCloudPlugin.joinViaServiceRegistryAt(srSocketAddress))
                .build();

resulted in:

java -cp target/echo-cloud-0.5.0-jar-with-dependencies.jar se.arkalix.examples.EchoProvider target/system.echo_provider.p12 target/truststore.p12 111.22.33.444 8443
Apr 14, 2021 4:59:43 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached <init>
INFO: HTTP/JSON cloud plugin attached to "echo_provider"
Echo provider running ...
Apr 14, 2021 4:59:43 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached requestAuthorizationKey
INFO: HTTP/JSON cloud plugin requesting authorization key ...
Apr 14, 2021 4:59:43 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached requestServiceDiscovery
INFO: HTTP/JSON cloud plugin connecting to "service_registry" system at /111.22.33.444:8443 ...
Apr 14, 2021 4:59:46 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached lambda$requestServiceDiscovery$12
SEVERE: HTTP/JSON cloud plugin failed to connect to "service_registry" system at /111.22.33.444:8443
io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: No route to host: /111.22.33.444:8443
Caused by: java.net.ConnectException: finishConnect(..) failed: No route to host
    at io.netty.channel.unix.Errors.throwConnectException(Errors.java:124)
    at io.netty.channel.unix.Socket.finishConnect(Socket.java:251)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.doFinishConnect(AbstractEpollChannel.java:672)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:649)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:529)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:465)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:832)

Apr 14, 2021 4:59:46 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached lambda$requestAuthorizationKey$15
WARNING: Failed to retrieve authorization key
io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: No route to host: /111.22.33.444:8443
Caused by: java.net.ConnectException: finishConnect(..) failed: No route to host
    at io.netty.channel.unix.Errors.throwConnectException(Errors.java:124)
    at io.netty.channel.unix.Socket.finishConnect(Socket.java:251)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.doFinishConnect(AbstractEpollChannel.java:672)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:649)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:529)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:465)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:832)

io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: No route to host: /111.22.33.444:8443
Caused by: java.net.ConnectException: finishConnect(..) failed: No route to host
    at io.netty.channel.unix.Errors.throwConnectException(Errors.java:124)
    at io.netty.channel.unix.Socket.finishConnect(Socket.java:251)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.doFinishConnect(AbstractEpollChannel.java:672)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:649)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:529)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:465)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:832)

and tried :

java -cp target/echo-cloud-0.5.0-jar-with-dependencies.jar se.arkalix.examples.EchoProvider target/system.echo_provider.p12 target/truststore.p12 ahf.com 8443

Apr 14, 2021 4:55:06 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached <init>
INFO: HTTP/JSON cloud plugin attached to "echo_provider"
Apr 14, 2021 4:55:06 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached requestAuthorizationKey
INFO: HTTP/JSON cloud plugin requesting authorization key ...
Apr 14, 2021 4:55:06 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached requestServiceDiscovery
INFO: HTTP/JSON cloud plugin connecting to "service_registry" system at ahf.com/111.22.33.444:8443 ...
Echo provider running ...
Apr 14, 2021 4:55:09 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached lambda$requestServiceDiscovery$12
SEVERE: HTTP/JSON cloud plugin failed to connect to "service_registry" system at ahf.com/111.22.33.444:8443
io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: No route to host: ahf.com/111.22.33.444:8443
Caused by: java.net.ConnectException: finishConnect(..) failed: No route to host
    at io.netty.channel.unix.Errors.throwConnectException(Errors.java:124)
    at io.netty.channel.unix.Socket.finishConnect(Socket.java:251)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.doFinishConnect(AbstractEpollChannel.java:672)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:649)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:529)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:465)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:832)

Apr 14, 2021 4:55:09 PM se.arkalix.core.plugin.HttpJsonCloudPlugin$Attached lambda$requestAuthorizationKey$15
WARNING: Failed to retrieve authorization key
io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: No route to host: ahf.com/111.22.33.444:8443
Caused by: java.net.ConnectException: finishConnect(..) failed: No route to host
    at io.netty.channel.unix.Errors.throwConnectException(Errors.java:124)
    at io.netty.channel.unix.Socket.finishConnect(Socket.java:251)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.doFinishConnect(AbstractEpollChannel.java:672)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:649)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:529)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:465)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:832)

io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: No route to host: ahf.com/111.22.33.444:8443
Caused by: java.net.ConnectException: finishConnect(..) failed: No route to host
    at io.netty.channel.unix.Errors.throwConnectException(Errors.java:124)
    at io.netty.channel.unix.Socket.finishConnect(Socket.java:251)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.doFinishConnect(AbstractEpollChannel.java:672)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:649)
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:529)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:465)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:832)

Furthermore, I did some more checks on the same system:

emanuelpalm commented 3 years ago

@InRiPa Strange. I've been digging around in the Netty source code. The error messages you receive come from the connect() unix call. The concrete error code you get is ENETUNREACH, which is used to indicate that the host you try to connect to is not available via your local network. If it works via ping, then maybe the <eth ip> network interface is not connected to the router through which ahf.com is available? The DNS lookup seems to work, though. Perhaps it doesn't use the same network interface?