osswald
I'm new here

ConnectionException (Connection Timeout) bei konfiguration des CaaS Service

Jump to solution

Hallo zusammen,

wir versuchen aktuell das CaaS Modul mit unserer Rest-Api im Kubernetes Cluster zu verbinden.

Wenn wir dabei im Servermanager die URL und den API Key eintragen und die Konfiguration überprüfen erhalten wir immer den Fehler:

(com.espirit.caas.adapter.processors.AsyncRequestToolkit): Connecting to REST api caused an exception

java.net.ConnectException: connection timed out: api-dev1.{KUNDE}.com/{IP}:443

woran könnte das liegen?

Wir verwenden  FirstSpirit 5.2.1608.76631 und die CaaS Version 2.0.21

Vielen Dank

Philipp

Stacktrace:

FSVersion=5.2.1608.76631#6192;JDK=1.8.0_144 64bit Oracle Corporation;OS=Linux 4.4.120-92.70-default amd64;Date=14.01.2019 14:24:47

java.util.concurrent.ExecutionException: java.net.ConnectException: connection timed out: api-dev1.{KUNDE}.com/{IP}:80

  at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)

  at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895)

  at com.espirit.caas.adapter.processors.AsyncRequestToolkit.checkConfigurationSynchronized(AsyncRequestToolkit.java:274)

  at com.espirit.caas.adapter.RestHeartAdapterImpl.checkConnection(RestHeartAdapterImpl.java:117)

  at com.espirit.caas.service.CaaSConnectionImpl.check(CaaSConnectionImpl.java:234)

  at com.espirit.caas.service.CaaSServiceImpl.checkConfiguration(CaaSServiceImpl.java:47)

  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

  at java.lang.reflect.Method.invoke(Method.java:498)

  at de.espirit.firstspirit.server.module.ServiceWrapperImpl.invoke(ServiceWrapperImpl.java:109)

  at com.sun.proxy.$Proxy7.checkConfiguration(Unknown Source)

  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

  at java.lang.reflect.Method.invoke(Method.java:498)

  at de.espirit.firstspirit.io.DefaultServerHandler.callManager(DefaultServerHandler.java:67)

  at de.espirit.firstspirit.server.io.handler.ManagerCall.doCall(ManagerCall.java:139)

  at de.espirit.firstspirit.server.io.handler.CompactCall.handle(CompactCall.java:73)

  at de.espirit.firstspirit.server.io.MessageWorker.run(MessageWorker.java:49)

  at de.espirit.firstspirit.server.ExecutionManagerImpl$RunnableWrapper.call(ExecutionManagerImpl.java:625)

  at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:590)

  at java.util.concurrent.FutureTask.run(FutureTask.java:266)

  at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:436)

  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

  at java.util.concurrent.FutureTask.run(FutureTask.java:266)

  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

  at java.lang.Thread.run(Thread.java:748)

  at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:56)

Caused by: java.net.ConnectException: connection timed out: api-dev1.{KUNDE}.com/{IP}:80

  at org.asynchttpclient.netty.channel.NettyConnectListener.onFailure(NettyConnectListener.java:179)

  at org.asynchttpclient.netty.channel.NettyChannelConnector$1.onFailure(NettyChannelConnector.java:108)

  at org.asynchttpclient.netty.SimpleChannelFutureListener.operationComplete(SimpleChannelFutureListener.java:28)

  at org.asynchttpclient.netty.SimpleChannelFutureListener.operationComplete(SimpleChannelFutureListener.java:20)

  at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:511)

  at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:504)

  at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:483)

  at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:424)

  at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:121)

  at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe$1.run(AbstractNioChannel.java:269)

  at io.netty.util.concurrent.PromiseTask$RunnableAdapter.call(PromiseTask.java:38)

  at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:127)

  at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)

  at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)

  at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:464)

  at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)

  at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)

  at java.lang.Thread.run(Thread.java:748)

Caused by: io.netty.channel.ConnectTimeoutException: connection timed out: api-dev1.{KUNDE}.com/{IP}:80

  at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe$1.run(AbstractNioChannel.java:267)

... 8 more

0 Kudos
1 Solution

Accepted Solutions

Wir haben den Fehler gefunden.

Die IT des Kunden hat die Firewallfreischaltung vergessen...

Jetzt funktioniert die Verbindung von CaaS und Firstspirit.

View solution in original post

0 Kudos
4 Replies
TanjaGroßmüller
Crownpeak employee

Hallo Philip,

bei der Überprüfung sendet das Modul einfach nur ein GET gegen die konfigurierte URL unter Verwendung des API-Key. Lt. Fehlermeldung tritt ja ein "ConnectionTimeout" auf, d.h. dass der Remote-Host nicht innerhalb von 5 Sekunden erreicht wird.

Zur Fehlereingrenzung würde ich empfehlen, mit einem Tool wie Postman oder curl ein GET abzusetzen. Das kannst Du einmal direkt vom FS-Server aus machen und/oder auch von einem anderen Host. Wie ist dort das Verhalten? Kann man damit mehr Details erkennen?

Wie sieht Euer Network Setup aus- Proxies, usw?

Viele Grüße,

Tanja

0 Kudos

Hallo Tanja,

mit Postman von meinem lokalen Rechner erreiche ich die Restschnittstelle und erhalte auch ein JSON zurück.

Wir haben den Fehler aber gerade an einer anderen Stelle lokalisiert.

In unserer Cloud wird Istio zum Routing der einzelnen Services verwendet. Unser CaaS ist unter dem Pfad "/content" erreichbar,

da die Restapi allerdings auf der Root antwortet müssen wir mit Istio einen Uri rewrite auf den Pfad "/" machen.

Dabei wird allerdings der erste / nach unserem Pfad /content nicht ersetzt und unser Pfad beginnt mit "//".

Die Antwort der Restapi beim Aufruf von "/content/test" enthällt dabei folgende Fehlermeldung:

{

    "http status code": 400,

    "http status description": "Bad Request",

    "message": "illegal database name, see https://docs.mongodb.org/v3.2/reference/limits/#naming-restrictions",

    "_links": {

        "self": {

            "href": "//test"

        }

    }

}

das Verhalten von Istio ist hier nochmal mit einer möglichen Lösung beschrieben:

Can't rewrite to empty string · Issue #8076 · istio/istio · GitHub

Viele Grüße

Philipp

0 Kudos

Hallo Tanja,

ist es möglich dass, das CaaS Modul den Pfad aus der URL löscht?

In der Firstspirit Fehlermeldung wird nur die URL ohne den Pfad angezeigt

Viele Grüße

Philipp

0 Kudos

Wir haben den Fehler gefunden.

Die IT des Kunden hat die Firewallfreischaltung vergessen...

Jetzt funktioniert die Verbindung von CaaS und Firstspirit.

0 Kudos