I've seen other posts about a similar topic; posting our issue here in the hopes that the log might identify something we can do about it.
Our team works remotely over the client's VPN, which has been performing a lot worse since the client migrated from Pulse to Ivanti several months ago. In addition to the impact on Webex meetings (e.g. voice lag), it's also causing frequent connection loss in Designer sessions. The client is aware of the issue and 'working on it' but that's been the case for months now.
It presents as a temporary connection loss of about 10-30 seconds, during which all Designer sessions and Perspective sessions show loss of connection to the gateway. After that, all the sessions reconnect, and the Perspective sessions seem to work fine, but most of the time the Designer sessions have not fully recovered. Trying to open a view results in Unable to deserialize resource
due to ObjectClosedException: Attempted to use a closed object
. If we try to export any open views, we get Failed to receive the response
due to IllegalStateException: The connection has been closed
.
More error detail here:
Console output
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Failed to receive the response.
at com.teamdev.jxbrowser.internal.rpc.transport.CommonThreadResponseConsumer.await(CommonThreadResponseConsumer.java:55)
at com.teamdev.jxbrowser.internal.rpc.transport.CommonThreadCallExecutor.execute(CommonThreadCallExecutor.java:29)
at com.teamdev.jxbrowser.internal.rpc.UniversalServiceConnection.invoke(UniversalServiceConnection.java:183)
at com.teamdev.jxbrowser.browser.internal.BrowserImpl.mainFrame(BrowserImpl.java:223)
at com.inductiveautomation.perspective.designer.workspace.JavaJsBridge.invokeFunction(JavaJsBridge.java:300)
at com.inductiveautomation.perspective.designer.workspace.JavaJsBridge.invokeStoreFunction(JavaJsBridge.java:338)
at com.inductiveautomation.perspective.designer.workspace.JavaJsBridge.getComponentDetails(JavaJsBridge.java:356)
at com.inductiveautomation.perspective.designer.workspace.propertyeditor.AbstractDesignAdapter.getComponentDetails(AbstractDesignAdapter.java:45)
at com.inductiveautomation.perspective.designer.workspace.propertyeditor.PropertyEditorFrame.setDesignAdapter(PropertyEditorFrame.java:190)
at com.inductiveautomation.perspective.designer.workspace.ViewWorkspace$2.lambda$stateChanged$0(ViewWorkspace.java:235)
at java.base/java.util.ArrayList.forEach(Unknown Source)
at com.inductiveautomation.perspective.designer.workspace.ViewWorkspace$2.stateChanged(ViewWorkspace.java:235)
at java.desktop/javax.swing.DefaultSingleSelectionModel.fireStateChanged(Unknown Source)
at com.jidesoft.swing.JideTabbedPane$IgnoreableSingleSelectionModel.fireStateChanged(Unknown Source)
at java.desktop/javax.swing.DefaultSingleSelectionModel.setSelectedIndex(Unknown Source)
at java.desktop/javax.swing.JTabbedPane.setSelectedIndexImpl(Unknown Source)
at java.desktop/javax.swing.JTabbedPane.setSelectedIndex(Unknown Source)
at com.jidesoft.swing.JideTabbedPane.setSelectedIndex(Unknown Source)
at com.jidesoft.plaf.basic.BasicJideTabbedPaneUI$MouseHandler.mousePressed(Unknown Source)
at java.desktop/java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.desktop/java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.desktop/java.awt.Component.processEvent(Unknown Source)
at java.desktop/java.awt.Container.processEvent(Unknown Source)
at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: The connection has been closed.
at com.teamdev.jxbrowser.internal.rpc.transport.CommonThreadCallExecutor.lambda$execute$0(CommonThreadCallExecutor.java:24)
at com.teamdev.jxbrowser.deps.com.google.protobuf.RpcUtil$1.run(RpcUtil.java:79)
at com.teamdev.jxbrowser.deps.com.google.protobuf.RpcUtil$1.run(RpcUtil.java:70)
at com.teamdev.jxbrowser.internal.rpc.ServiceChannel$1.onError(ServiceChannel.java:76)
at com.teamdev.jxbrowser.internal.rpc.transport.SharedMemoryTransport.send(SharedMemoryTransport.java:101)
at com.teamdev.jxbrowser.internal.rpc.transport.RpcConnection.send(RpcConnection.java:79)
at com.teamdev.jxbrowser.internal.rpc.ServiceChannel.callMethod(ServiceChannel.java:52)
at com.teamdev.jxbrowser.browser.internal.rpc.BrowserStub.getMainFrame(BrowserStub.java:130)
at com.teamdev.jxbrowser.internal.rpc.transport.CommonThreadCallExecutor.execute(CommonThreadCallExecutor.java:22)
... 49 more
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Failed to receive the response.
at com.teamdev.jxbrowser.internal.rpc.transport.CommonThreadResponseConsumer.await(CommonThreadResponseConsumer.java:55)
at com.teamdev.jxbrowser.internal.rpc.transport.CommonThreadCallExecutor.execute(CommonThreadCallExecutor.java:29)
at com.teamdev.jxbrowser.internal.rpc.UniversalServiceConnection.invoke(UniversalServiceConnection.java:183)
at com.teamdev.jxbrowser.browser.internal.BrowserImpl.mainFrame(BrowserImpl.java:223)
at com.inductiveautomation.perspective.designer.workspace.JavaJsBridge.invokeFunction(JavaJsBridge.java:300)
at com.inductiveautomation.perspective.designer.workspace.JavaJsBridge.activateComponentTool(JavaJsBridge.java:272)
at com.inductiveautomation.perspective.designer.workspace.JavaJsBridge.activateComponentTool(JavaJsBridge.java:267)
at com.inductiveautomation.perspective.designer.workspace.palette.PaletteFrame.deselect(PaletteFrame.java:268)
at com.inductiveautomation.perspective.designer.workspace.ViewWorkspaceActions.updateEnabled(ViewWorkspaceActions.java:654)
at com.inductiveautomation.ignition.client.util.EDTUtil$ProcessQueue.run(EDTUtil.java:126)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: The connection has been closed.
at com.teamdev.jxbrowser.internal.rpc.transport.CommonThreadCallExecutor.lambda$execute$0(CommonThreadCallExecutor.java:24)
at com.teamdev.jxbrowser.deps.com.google.protobuf.RpcUtil$1.run(RpcUtil.java:79)
at com.teamdev.jxbrowser.deps.com.google.protobuf.RpcUtil$1.run(RpcUtil.java:70)
at com.teamdev.jxbrowser.internal.rpc.ServiceChannel$1.onError(ServiceChannel.java:76)
at com.teamdev.jxbrowser.internal.rpc.transport.SharedMemoryTransport.send(SharedMemoryTransport.java:101)
at com.teamdev.jxbrowser.internal.rpc.transport.RpcConnection.send(RpcConnection.java:79)
at com.teamdev.jxbrowser.internal.rpc.ServiceChannel.callMethod(ServiceChannel.java:52)
at com.teamdev.jxbrowser.browser.internal.rpc.BrowserStub.getMainFrame(BrowserStub.java:130)
at com.teamdev.jxbrowser.internal.rpc.transport.CommonThreadCallExecutor.execute(CommonThreadCallExecutor.java:22)
... 21 more
Exception in thread "AWT-EventQueue-0" com.teamdev.jxbrowser.ObjectClosedException: Attempted to use a closed object.
You're trying to call a method of a closed object. Usually, it happens when you
call the `close()` method of an object (or its owner) prior to calling methods
of that object.
Another common cause of this exception is working with cached DOM or JavaScript
objects. For example, if you navigate to another web page and try to call
a method of a DOM or a JavaScript object from the previous page, you will get
this exception.
It's also possible that the native Chromium process has crashed. In that case,
all the objects that belong to that process are closed automatically.
The following article explains this exception in detail: https://links.teamdev.com/jxbrowser-object-closed-exception
at com.teamdev.jxbrowser.internal.rpc.ServiceConnectionImpl.checkNotClosed(ServiceConnectionImpl.java:243)
at com.teamdev.jxbrowser.internal.rpc.ServiceConnectionImpl.invokeAsync(ServiceConnectionImpl.java:221)
at com.teamdev.jxbrowser.browser.internal.DragAndDrop.isEnabled(DragAndDrop.java:45)
at com.teamdev.jxbrowser.browser.internal.DragAndDrop.ifEnabled(DragAndDrop.java:61)
at com.teamdev.jxbrowser.view.swing.internal.OffScreenRenderWidget.showRenderWidget(OffScreenRenderWidget.java:289)
at com.teamdev.jxbrowser.view.swing.internal.Graphics2dRenderWidget.showRenderWidget(Graphics2dRenderWidget.java:83)
at com.teamdev.jxbrowser.view.swing.internal.OffScreenRenderWidget$HierarchyListenerImpl.hierarchyChanged(OffScreenRenderWidget.java:859)
at java.desktop/java.awt.Component.processHierarchyEvent(Unknown Source)
at java.desktop/java.awt.Component.processEvent(Unknown Source)
at java.desktop/java.awt.Container.processEvent(Unknown Source)
at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.Component.createHierarchyEvents(Unknown Source)
at java.desktop/java.awt.Container.createHierarchyEvents(Unknown Source)
at java.desktop/java.awt.Container.createHierarchyEvents(Unknown Source)
at java.desktop/java.awt.Container.createHierarchyEvents(Unknown Source)
at java.desktop/java.awt.Container.createHierarchyEvents(Unknown Source)
at java.desktop/java.awt.Component.show(Unknown Source)
at java.desktop/java.awt.Component.show(Unknown Source)
at java.desktop/java.awt.Component.setVisible(Unknown Source)
at java.desktop/javax.swing.JComponent.setVisible(Unknown Source)
at com.jidesoft.plaf.basic.BasicJideTabbedPaneUI.setVisibleComponent(Unknown Source)
at com.jidesoft.plaf.basic.BasicJideTabbedPaneUI$TabbedPaneScrollLayout.layoutContainer(Unknown Source)
at java.desktop/java.awt.Container.layout(Unknown Source)
at java.desktop/java.awt.Container.doLayout(Unknown Source)
at java.desktop/java.awt.Container.validateTree(Unknown Source)
at java.desktop/java.awt.Container.validateTree(Unknown Source)
at java.desktop/java.awt.Container.validateTree(Unknown Source)
at java.desktop/java.awt.Container.validateTree(Unknown Source)
at java.desktop/java.awt.Container.validate(Unknown Source)
at com.jidesoft.swing.JideSplitPane.setDividerLocation(Unknown Source)
at com.jidesoft.swing.JideSplitPane.setDividerLocation(Unknown Source)
at com.jidesoft.swing.JideSplitPane.finishDraggingTo(Unknown Source)
at com.jidesoft.docking.ContainerContainer.finishDraggingTo(Unknown Source)
at com.jidesoft.swing.JideSplitPaneDivider.finishDraggingTo(Unknown Source)
at com.inductiveautomation.ignition.designer.IgnitionDockingManager$GlobalReleaseDivider.finishDraggingTo(IgnitionDockingManager.java:85)
at com.jidesoft.swing.JideSplitPaneDivider$DragController.completeDrag(Unknown Source)
at com.jidesoft.swing.JideSplitPaneDivider$MouseHandler.mouseReleased(Unknown Source)
at com.jidesoft.docking.ContainerContainerDivider$a.mouseReleased(Unknown Source)
at com.inductiveautomation.ignition.designer.IgnitionDockingManager$GlobalReleaseDivider.lambda$new$0(IgnitionDockingManager.java:55)
at java.desktop/java.awt.Toolkit$SelectiveAWTEventListener.eventDispatched(Unknown Source)
at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Unknown Source)
at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Unknown Source)
at java.desktop/java.awt.Toolkit.notifyAWTEventListeners(Unknown Source)
at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
In most cases, we have to exit Designer - which has often locked up, requiring a Task Manager End Task - and re-open the project (which takes a while over VPN). It's gotten pretty aggravating since it happens every 30 min or so all day long.
Here's is the console output that occurs just before and after the connection loss:
Console output
06:44:40.157 [ForkJoinPool.commonPool-worker-19] INFO designer.IdpDesignerSplash - IdP Proxy Web Server shut down in 20 seconds
06:44:40.253 [Designer-Startup] INFO designer.main - Cleanup... [+15799]
06:44:40.259 [Designer-Startup] INFO designer.main - Initializing UI... [+15805]
06:44:40.311 [Designer-Startup] INFO tags.manager.gwinterface - Tag poll rate changed to 250 ms
06:44:40.312 [DesignerExecEngine-1] INFO tags.subscriptions - Changing connected quality to 'Good'
06:44:43.284 [Designer-Startup] INFO designer.main - Starting module: Perspective [+18830]
06:44:46.477 [Designer-Startup] INFO Perspective.Designer - Starting up Perspective module. Mode: Activated
06:44:49.457 [AWT-EventQueue-0] INFO Perspective.SessionProps - Session props debug url: http://localhost:9222/devtools/inspector.html?ws=localhost:9222/devtools/page/70087C1774EC37A7A5536D5575018D8F
06:44:51.599 [Designer-Startup] INFO designer.main - Starting module: SFC [+27145]
06:44:54.834 [Designer-Startup] INFO designer.main - Starting module: SQL Bridge [+30379]
06:44:55.717 [Designer-Startup] INFO designer.main - Starting module: OpcCom [+31263]
06:44:55.718 [Designer-Startup] INFO designer.main - Starting module: Reporting [+31264]
06:44:55.804 [Designer-Startup] INFO reporting.Designer - Starting up Reporting Module. Mode: Activated
06:44:56.901 [Designer-Startup] INFO designer.main - Starting module: Symbol Factory [+32447]
06:44:56.909 [Designer-Startup] INFO designer.main - Starting module: WebDev [+32455]
06:44:56.966 [Designer-Startup] INFO designer.main - Starting module: Alarm Notification [+32512]
06:44:57.188 [Designer-Startup] INFO designer.main - Starting module: OPC-UA [+32734]
06:44:57.188 [Designer-Startup] INFO designer.main - Starting module: Enterprise Administration [+32734]
06:44:57.233 [Designer-Startup] INFO designer.main - Starting module: DNP3 Driver [+32779]
06:44:57.233 [Designer-Startup] INFO designer.main - Starting module: Canary Historian Module [+32779]
06:44:57.234 [Designer-Startup] INFO designer.main - Initializing Scripting... [+32780]
06:44:57.423 [Designer-Startup] INFO designer.main - Initializing UI... [+32969]
06:49:50.480 [AWT-EventQueue-0] INFO Perspective.Designer.Workspace - Launching view with DesignerPageParams 'MyProject', tab id 'MyFolder/MyView', using base url https://mycompany.corp.com:8043/data/perspective/design
06:49:50.484 [AWT-EventQueue-0] INFO ViewResourceEditor - Perspective remote debugging port open at: http://localhost:9222/devtools/inspector.html?ws=localhost:9222/devtools/page/72480826FC4D7111524C619F41126254
06:50:11.021 [AWT-EventQueue-0] INFO designer.update-and-save - Save finished in 195ms.
06:54:22.261 [DesignerExecEngine-2] WARN com.inductiveautomation.ignition.client.gateway_interface.GatewayConnectionManager - Connection to Gateway lost, due to exception.
com.inductiveautomation.ignition.client.gateway_interface.GatewayException: Permission denied: connect
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.newGatewayException(GatewayInterface.java:351)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.getResponse(GatewayInterface.java:543)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.getResponse(GatewayInterface.java:357)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.ping(GatewayInterface.java:1011)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.ping(GatewayInterface.java:996)
at com.inductiveautomation.ignition.client.tags.impl.GatewayTagInterface.runPoll(GatewayTagInterface.java:128)
at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$TrackedTask.run(BasicExecutionEngine.java:587)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Permission denied: connect
at java.base/java.net.PlainSocketImpl.waitForConnect(Native Method)
at java.base/java.net.PlainSocketImpl.socketConnect(Unknown Source)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.base/java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.base/java.net.SocksSocketImpl.connect(Unknown Source)
at java.base/java.net.Socket.connect(Unknown Source)
at java.base/sun.security.ssl.SSLSocketImpl.connect(Unknown Source)
at java.base/sun.net.NetworkClient.doConnect(Unknown Source)
at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source)
at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source)
at java.base/sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.base/java.net.HttpURLConnection.getResponseCode(Unknown Source)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.getResponse(GatewayInterface.java:437)
... 11 common frames omitted
06:54:22.305 [DesignerExecEngine-2] INFO tags.subscriptions - Changing connected quality to 'Bad_Stale'
06:54:22.308 [DesignerExecEngine-2] INFO com.inductiveautomation.ignition.client.gateway_interface.GatewayConnectionManager - Starting reconnect thread.
06:54:27.048 [Browser Thread: 6f317697-2d04-41b2-81a1-94fa1a7033af] INFO Perspective.Designer.Workspace - store.Channel: Websocket connection closed. code=1006, wasClean=false, reason=No reason given, codeMeaning=Normal Closure, codeDescription=Reserved. Indicates that a connection was closed abnormally (that is, with no close frame being sent) when a status code is expected.
06:54:27.048 [Browser Thread: 6f317697-2d04-41b2-81a1-94fa1a7033af] INFO Perspective.SessionProps - store.Channel: Websocket connection closed. code=1006, wasClean=false, reason=No reason given, codeMeaning=Normal Closure, codeDescription=Reserved. Indicates that a connection was closed abnormally (that is, with no close frame being sent) when a status code is expected.
06:54:30.088 [Browser Thread: 6f317697-2d04-41b2-81a1-94fa1a7033af] INFO Perspective.SessionProps - store.Client: Hello API call failed: 'AxiosError: Network Error'
06:54:30.089 [Browser Thread: 6f317697-2d04-41b2-81a1-94fa1a7033af] ERROR Perspective.Designer.Workspace - level: LEVEL_ERROR
message: "store.Client: Hello API call failed: \'AxiosError: Network Error\'"
line_number: 2
source: "https://ignd.nns.com:8043/res/perspective/js/PerspectiveClient.ef24a2d510d2934354db.js"
06:54:52.650 [GatewayConnection-1] INFO tags.subscriptions - Changing connected quality to 'Good'
06:54:52.693 [GatewayConnection-1] INFO com.inductiveautomation.ignition.client.gateway_interface.GatewayConnectionManager - Stopping reconnect thread.
Is there a way to get Designer to be more tolerant of the connection loss so it will fully recover when connection is restored? In Project Properties, Desktop Session Timeout is set to 180 sec. On the Gateway Network Settings, Websocket Idle Timeout is 30000 milliseconds and Ping Timeout is 300 milliseconds.