Changes on library script doesnt apply to running client instances

Hello to everyone,

I have an issue inside one of my projects. I have a project library script “TrkPanels_Dev” which has a method called "Update”. This is called by a client timer event every two seconds.

Whenever I change the TrkPanels_Dev.Update method and save, in order to update it on the running client instance, I need to logout or to close the instance. It seems a little strange to do all this work in order to change the library script at runtime.

I start to notice that inside the gateway, this message appears:

org.python.core.PySyntaxError: SyntaxError: mismatched input '\n\n' expecting INDENT (<<[Middleware] Update Script>>, line 4)

at org.python.core.ParserFacade.fixParseError(ParserFacade.java:95)

at org.python.core.ParserFacade.parse(ParserFacade.java:205)

at org.python.core.Py.compile_flags(Py.java:2269)

at com.inductiveautomation.ignition.common.script.ScriptManager.compileFunction(ScriptManager.java:899)

at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle$TrackingProjectScriptManager.compileFunctionSuper(ProjectScriptLifecycle.java:1124)

at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle$AutoRecompilingScriptFunction.getOrCreateDelegate(ProjectScriptLifecycle.java:1240)

at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle$AutoRecompilingScriptFunction.<init>(ProjectScriptLifecycle.java:1231)

at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle$TrackingProjectScriptManager.compileFunction(ProjectScriptLifecycle.java:1104)

at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle.lambda$getUpdateScriptContext$11(ProjectScriptLifecycle.java:603)

at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle.runUpdateScript(ProjectScriptLifecycle.java:697)

at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle.onAfterChanges(ProjectScriptLifecycle.java:1055)

at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycle$LifecycleResourceListener.onAfterChanges(ResourceCollectionLifecycle.java:183)

at com.inductiveautomation.ignition.common.resourcecollection.AbstractResourceCollection.notifyListener(AbstractResourceCollection.java:386)

at com.inductiveautomation.ignition.common.resourcecollection.AbstractResourceCollection.notifyResourceListeners(AbstractResourceCollection.java:315)

at com.inductiveautomation.ignition.common.resourcecollection.AbstractResourceCollection.updateEffectiveState(AbstractResourceCollection.java:156)

at com.inductiveautomation.ignition.common.resourcecollection.RuntimeResourceCollection.applyChange(RuntimeResourceCollection.java:267)

at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycleFactory$1.lambda$updateOrStartAffected$5(ResourceCollectionLifecycleFactory.java:210)

at java.base/java.util.ArrayList.forEach(Unknown Source)

at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycleFactory$1.updateOrStartAffected(ResourceCollectionLifecycleFactory.java:190)

at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycleFactory$1.collectionUpdated(ResourceCollectionLifecycleFactory.java:167)

at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionManagerImpl.notifyCollectionChanged(ResourceCollectionManagerImpl.java:1627)

at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionManagerImpl.lambda$fireCollectionChanged$31(ResourceCollectionManagerImpl.java:1606)

at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionManagerImpl.lambda$submitToQueue$30(ResourceCollectionManagerImpl.java:1591)

at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionManagerImpl.lambda$wrapNotificationTask$0(ResourceCollectionManagerImpl.java:205)

at com.inductiveautomation.ignition.common.util.ExecutionQueue$PollAndExecute.run(ExecutionQueue.java:238)

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)

But I dont have script that have “Update Script” as name. I have tried also to delete unused script and now it seems fixed.

Some details about Ignition installed:

Gateway Version: 8.3.2 (b2025120210)
Running inside Hyper-V VM
OS Windows 11 Pro
1 Like

Does your project push updates out or require the client to update manually?

1 Like

This (and the stacktrace) are identifying the "Project Update" script configured in Gateway Events as the culprit.