Save fails after a few minutes in 8.3.6 (Project disappear ?)

Hi everyone,

I am currently setting up a new server to test the migration of a Perspective project from Ignition 8.1 to 8.3.6.

I am experiencing a recurring issue with the Designer. After a few minutes of use, if I try to save my work or perform actions like creating Tag Groups, this error pops up:


Full error:

com.inductiveautomation.ignition.common.rpc.RpcException: Unexpected status code: 403
	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invokeRaw(GatewayInterface.java:417)
	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invoke(GatewayInterface.java:366)
	at com.inductiveautomation.ignition.client.gateway_interface.GatewayConnection$Rpc$RpcInvocationHandler.invoke(GatewayConnection.java:317)
	at jdk.proxy2/jdk.proxy2.$Proxy8.canSaveProject(Unknown Source)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.handleSave(IgnitionDesigner.java:1396)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler.lambda$handleSaveAction$12(IgnitionDesigner.java:2773)
	at com.inductiveautomation.ignition.client.util.gui.progress.Task$FunctionWrapper.apply(Task.java:259)
	at com.inductiveautomation.ignition.client.util.gui.progress.Task$FunctionWrapper.apply(Task.java:249)
	at com.inductiveautomation.ignition.client.util.gui.progress.Task.lambda$runInternal$3(Task.java:215)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(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)

Ignition v8.3.6 (b2026042713)
Java: Azul Systems, Inc. 17.0.18

The timing seems inconsistent, but once the error occurs, if I go to File > Open (without saving the current project), the project selection window appears completely empty.

Full error:

java.util.concurrent.ExecutionException: java.lang.reflect.UndeclaredThrowableException
	at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
	at com.inductiveautomation.ignition.client.util.gui.progress.Task.runBlocking(Task.java:151)
	at com.inductiveautomation.ignition.client.util.gui.progress.Task.runBlocking(Task.java:128)
	at com.inductiveautomation.ignition.designer.ProjectDialog.<init>(ProjectDialog.java:123)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler.handleOpen(IgnitionDesigner.java:2994)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler.handleOpen(IgnitionDesigner.java:2955)
	at com.inductiveautomation.ignition.client.util.action.BaseAction$BaseActionImpl.actionPerformed(BaseAction.java:188)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at java.desktop/javax.swing.AbstractButton.doClick(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(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(Unknown Source)
	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(Unknown Source)
	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.reflect.UndeclaredThrowableException
	at jdk.proxy2/jdk.proxy2.$Proxy8.getValidProjectManifests(Unknown Source)
	at com.inductiveautomation.ignition.designer.ProjectDialog.lambda$new$1(ProjectDialog.java:120)
	at com.inductiveautomation.ignition.client.util.gui.progress.Task.lambda$create$2(Task.java:107)
	at com.inductiveautomation.ignition.client.util.gui.progress.Task$FunctionWrapper.apply(Task.java:259)
	at com.inductiveautomation.ignition.client.util.gui.progress.Task$FunctionWrapper.apply(Task.java:249)
	at com.inductiveautomation.ignition.client.util.gui.progress.Task.lambda$runInternal$3(Task.java:215)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.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: com.inductiveautomation.ignition.common.rpc.RpcException: Unexpected status code: 403
	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invokeRaw(GatewayInterface.java:417)
	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invoke(GatewayInterface.java:366)
	at com.inductiveautomation.ignition.client.gateway_interface.GatewayConnection$Rpc$RpcInvocationHandler.invoke(GatewayConnection.java:317)
	... 11 more

Ignition v8.3.6 (b2026042713)
Java: Azul Systems, Inc. 17.0.18

Currently, the only way I figure out to get back to work is to force-close the Designer via Task Manager, restart it, and reopen the project (which is still there and visible upon restart).

Has anyone encountered this behavior?

What's your network topology look like?

What's happening suggests to me that your designer is making a connection and establishing a session, and then a few minutes later something about your local machine changes and the session you had on the backend is lost.

Check your gateway logs, they may have more details.

This is the last log after the error

As an additional detail, I am currently connected via VPN. Tomorrow I will test without it to see if the issue persists.

However, the strange thing is that I am also connected to the production server (which is basically a "twin" machine running 8.1) over the exact same VPN, and I am not experiencing any connection drops there.

What's under "Websocket connection errored out"? The stacktrace there might be interesting.

I think that it's something with your VPN interacting poorly with the designer's persistent session(s).

You could also keep an eye on the gateway status page that lists active designer connections - I'm betting when this starts happening your extant designer connection will go "dormant" - to the gateway, your existing designer connection is disappearing.