# Add OPCUA PLC Timeout

**URL:** <https://forum.inductiveautomation.com/t/add-opcua-plc-timeout/85966>\
**Category:** Ignition\
**Tags:** ignition81\
**Created:** [February 19, 2024, 7:01pm UTC](https://forum.inductiveautomation.com/t/add-opcua-plc-timeout/85966 "2024-02-19T19:01:50Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yousef\_Ali](https://avatars.discourse-cdn.com/v4/letter/y/87869e/32.png) [@Yousef\_Ali](https://forum.inductiveautomation.com/u/Yousef_Ali)\
**Post date:** [February 19, 2024, 7:01pm UTC](https://forum.inductiveautomation.com/t/add-opcua-plc-timeout/85966/1 "2024-02-19T19:01:50Z")

</div>

My gateway connected to different PLC OPCUA .. When i am trying to add new PLC . i got504 GW timeout . what's that means ? GW version 8.1.35

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/5/3/5327f5743ecd8b1b9c639d4c303e408134cdde6c.png)

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [February 19, 2024, 7:03pm UTC](https://forum.inductiveautomation.com/t/add-opcua-plc-timeout/85966/2 "2024-02-19T19:03:45Z")

</div>

Some bug in the discovery wizard perhaps... check the gateway logs for an error message.

---

<div class="post-metadata">

**Author:** ![Yousef\_Ali](https://avatars.discourse-cdn.com/v4/letter/y/87869e/32.png) [@Yousef\_Ali](https://forum.inductiveautomation.com/u/Yousef_Ali)\
**Post date:** [February 19, 2024, 7:10pm UTC](https://forum.inductiveautomation.com/t/add-opcua-plc-timeout/85966/3 "2024-02-19T19:10:37Z")

</div>

Below are the two errors appears in the Log ..

> **Error 1**
>
> ```auto
> java.util.concurrent.ExecutionException: io.netty.channel.AbstractChannel$AnnotatedNoRouteToHostException: No route to host: /10.X.X.X
> 
> at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source)
> 
> at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
> 
> at com.inductiveautomation.ignition.gateway.opcua.client.connection.web.discovery.wizardsteps.DiscoveryServerLookupStep.findServers(DiscoveryServerLookupStep.java:106)
> 
> at com.inductiveautomation.ignition.gateway.opcua.client.connection.web.discovery.wizardsteps.DiscoveryServerLookupStep.next(DiscoveryServerLookupStep.java:89)
> 
> at org.apache.wicket.extensions.wizard.dynamic.DynamicWizardModel.next(DynamicWizardModel.java:126)
> 
> at com.inductiveautomation.ignition.gateway.opcua.client.connection.web.discovery.EndpointWizardButtonBar$NextButton.onClick(EndpointWizardButtonBar.java:26)
> 
> at org.apache.wicket.extensions.wizard.WizardButton.onSubmit(WizardButton.java:88)
> 
> at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1304)
> 
> at org.apache.wicket.markup.html.form.Form.process(Form.java:967)
> 
> at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:789)
> 
> at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:701)
> 
> at jdk.internal.reflect.GeneratedMethodAccessor394.invoke(Unknown Source)
> 
> at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 
> at java.base/java.lang.reflect.Method.invoke(Unknown Source)
> 
> at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
> 
> at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:216)
> 
> at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:243)
> 
> at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:236)
> 
> at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:890)
> 
> at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
> 
> at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
> 
> at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
> 
> at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
> 
> at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
> 
> at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
> 
> at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
> 
> at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210)
> 
> at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
> 
> at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
> 
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
> 
> at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
> 
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
> 
> at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
> 
> at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
> 
> at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
> 
> at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384)
> 
> at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
> 
> at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
> 
> at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
> 
> at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
> 
> at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306)
> 
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
> 
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
> 
> at com.inductiveautomation.catapult.handlers.RemoteHostNameLookupHandler.handle(RemoteHostNameLookupHandler.java:121)
> 
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
> 
> at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:301)
> 
> at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)
> 
> at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:141)
> 
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
> 
> at org.eclipse.jetty.server.Server.handle(Server.java:563)
> 
> at org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:505)
> 
> at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:762)
> 
> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:497)
> 
> at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282)
> 
> at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
> 
> at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
> 
> at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
> 
> at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:416)
> 
> at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:385)
> 
> at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:272)
> 
> at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.lambda$new$0(AdaptiveExecutionStrategy.java:140)
> 
> at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411)
> 
> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)
> 
> at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)
> 
> at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)
> 
> at java.base/java.lang.Thread.run(Unknown Source)
> 
> ```

> **Error 2**
>
> ```auto
> java.util.concurrent.ExecutionException: UaException: status=Bad_Timeout, message=timed out waiting for secure channel
> 
> at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source)
> 
> at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
> 
> at com.inductiveautomation.ignition.gateway.opcua.client.connection.web.discovery.wizardsteps.DiscoveryServerLookupStep.findServers(DiscoveryServerLookupStep.java:106)
> 
> at com.inductiveautomation.ignition.gateway.opcua.client.connection.web.discovery.wizardsteps.DiscoveryServerLookupStep.next(DiscoveryServerLookupStep.java:89)
> 
> at org.apache.wicket.extensions.wizard.dynamic.DynamicWizardModel.next(DynamicWizardModel.java:126)
> 
> at com.inductiveautomation.ignition.gateway.opcua.client.connection.web.discovery.EndpointWizardButtonBar$NextButton.onClick(EndpointWizardButtonBar.java:26)
> 
> at org.apache.wicket.extensions.wizard.WizardButton.onSubmit(WizardButton.java:88)
> 
> at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1304)
> 
> at org.apache.wicket.markup.html.form.Form.process(Form.java:967)
> 
> at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:789)
> 
> at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:701)
> 
> at jdk.internal.reflect.GeneratedMethodAccessor394.invoke(Unknown Source)
> 
> at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 
> at java.base/java.lang.reflect.Method.invoke(Unknown Source)
> 
> at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
> 
> at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:216)
> 
> at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:243)
> 
> at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:236)
> 
> at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:890)
> 
> at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
> 
> at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
> 
> at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
> 
> at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
> 
> at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
> 
> at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
> 
> at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
> 
> at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210)
> 
> at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
> 
> at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
> 
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
> 
> at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
> 
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
> 
> at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
> 
> at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
> 
> at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
> 
> at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384)
> 
> at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
> 
> at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
> 
> at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
> 
> at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
> 
> at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306)
> 
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
> 
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
> 
> at com.inductiveautomation.catapult.handlers.RemoteHostNameLookupHandler.handle(RemoteHostNameLookupHandler.java:121)
> 
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
> 
> at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:301)
> 
> at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)
> 
> at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:141)
> 
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
> 
> at org.eclipse.jetty.server.Server.handle(Server.java:563)
> 
> at org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:505)
> 
> at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:762)
> 
> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:497)
> 
> at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282)
> 
> at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
> 
> at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
> 
> at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
> 
> at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:416)
> 
> at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:385)
> 
> at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:272)
> 
> at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.lambda$new$0(AdaptiveExecutionStrategy.java:140)
> 
> at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411)
> 
> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)
> 
> at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)
> 
> at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)
> 
> at java.base/java.lang.Thread.run(Unknown Source)
> 
> Caused by: org.eclipse.milo.opcua.stack.core.UaException: timed out waiting for secure channel
> 
> at org.eclipse.milo.opcua.stack.client.transport.uasc.UascClientMessageHandler.lambda$handlerAdded$2(UascClientMessageHandler.java:134)
> 
> at io.netty.util.HashedWheelTimer$HashedWheelTimeout.run(HashedWheelTimer.java:715)
> 
> at io.netty.util.concurrent.ImmediateExecutor.execute(ImmediateExecutor.java:34)
> 
> at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:703)
> 
> at io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:790)
> 
> at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:503)
> 
> ... 1 common frames omitted
> 
> ```

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [February 19, 2024, 7:14pm UTC](https://forum.inductiveautomation.com/t/add-opcua-plc-timeout/85966/4 "2024-02-19T19:14:11Z")

</div>

Hmm, those look like exceptions being caught and logged, not something that should result in that 504 error...

can you export and upload your entire logs file?

Also, FWIW, it seems that you don't have a network route to whatever IP was being referenced there.

---

<div class="post-metadata">

**Author:** ![Yousef\_Ali](https://avatars.discourse-cdn.com/v4/letter/y/87869e/32.png) [@Yousef\_Ali](https://forum.inductiveautomation.com/u/Yousef_Ali)\
**Post date:** [February 19, 2024, 7:15pm UTC](https://forum.inductiveautomation.com/t/add-opcua-plc-timeout/85966/5 "2024-02-19T19:15:58Z")

</div>

Yes, This IP still our IT team working to add and lucky i am checking if they did their job .  
GW shouldn't give timeout

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [February 19, 2024, 7:16pm UTC](https://forum.inductiveautomation.com/t/add-opcua-plc-timeout/85966/6 "2024-02-19T19:16:14Z")

</div>

> [@Yousef\_Ali](#):
>
> GW shouldn't give timeout

Sure, I don't disagree with you. But it is.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [February 19, 2024, 7:48pm UTC](https://forum.inductiveautomation.com/t/add-opcua-plc-timeout/85966/7 "2024-02-19T19:48:07Z")

</div>

Well, the 504 error is coming from whatever reverse proxy or gateway you have in front of the actual Ignition gateway, as a result of the discovery page you're on blocking and not responding for longer than the proxy/gateway is willing to wait.

---

<div class="post-metadata">

**Author:** ![Yousef\_Ali](https://avatars.discourse-cdn.com/v4/letter/y/87869e/32.png) [@Yousef\_Ali](https://forum.inductiveautomation.com/u/Yousef_Ali)\
**Post date:** [February 19, 2024, 7:49pm UTC](https://forum.inductiveautomation.com/t/add-opcua-plc-timeout/85966/8 "2024-02-19T19:49:48Z")

</div>

This make sense . it's clear now .  
Thanks Kevin
