# Changes on library script doesnt apply to running client instances

**URL:** <https://forum.inductiveautomation.com/t/changes-on-library-script-doesnt-apply-to-running-client-instances/112757>\
**Category:** Ignition\
**Tags:** vision, scripting\
**Created:** [December 11, 2025, 11:24am UTC](https://forum.inductiveautomation.com/t/changes-on-library-script-doesnt-apply-to-running-client-instances/112757 "2025-12-11T11:24:09Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Thomas\_Gastaldi](https://avatars.discourse-cdn.com/v4/letter/t/47e85d/32.png) [@Thomas\_Gastaldi](https://forum.inductiveautomation.com/u/Thomas_Gastaldi)\
**Post date:** [December 11, 2025, 11:24am UTC](https://forum.inductiveautomation.com/t/changes-on-library-script-doesnt-apply-to-running-client-instances/112757/1 "2025-12-11T11:24:09Z")

</div>

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.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/9/d95c7764cbbdc86d595f9d52c2ac3deafcddda6e.png)

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:

```python
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:

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

```

---

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [December 11, 2025, 3:36pm UTC](https://forum.inductiveautomation.com/t/changes-on-library-script-doesnt-apply-to-running-client-instances/112757/2 "2025-12-11T15:36:40Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [December 11, 2025, 6:54pm UTC](https://forum.inductiveautomation.com/t/changes-on-library-script-doesnt-apply-to-running-client-instances/112757/3 "2025-12-11T18:54:12Z")

</div>

> [@Thomas\_Gastaldi](#):
>
> `<[Middleware] Update Script>`

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

---

<div class="post-metadata">

**Author:** ![Thomas\_Gastaldi](https://avatars.discourse-cdn.com/v4/letter/t/47e85d/32.png) [@Thomas\_Gastaldi](https://forum.inductiveautomation.com/u/Thomas_Gastaldi)\
**Post date:** [December 12, 2025, 7:36am UTC](https://forum.inductiveautomation.com/t/changes-on-library-script-doesnt-apply-to-running-client-instances/112757/4 "2025-12-12T07:36:02Z")

</div>

I tried both the methods, event with Update Mode on Notify, it doesnt update.

---

<div class="post-metadata">

**Author:** ![Thomas\_Gastaldi](https://avatars.discourse-cdn.com/v4/letter/t/47e85d/32.png) [@Thomas\_Gastaldi](https://forum.inductiveautomation.com/u/Thomas_Gastaldi)\
**Post date:** [December 12, 2025, 7:36am UTC](https://forum.inductiveautomation.com/t/changes-on-library-script-doesnt-apply-to-running-client-instances/112757/5 "2025-12-12T07:36:42Z")

</div>

Ok, I find that. I disabled it since I dont use it.

---

<div class="post-metadata">

**Author:** ![Thomas\_Gastaldi](https://avatars.discourse-cdn.com/v4/letter/t/47e85d/32.png) [@Thomas\_Gastaldi](https://forum.inductiveautomation.com/u/Thomas_Gastaldi)\
**Post date:** [December 12, 2025, 10:43am UTC](https://forum.inductiveautomation.com/t/changes-on-library-script-doesnt-apply-to-running-client-instances/112757/6 "2025-12-12T10:43:28Z")

</div>

The issue still remains. Is there a function that flush the client cache? At this point it seems that the client is keeping an old copy of the client script.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 12, 2025, 1:10pm UTC](https://forum.inductiveautomation.com/t/changes-on-library-script-doesnt-apply-to-running-client-instances/112757/7 "2025-12-12T13:10:46Z")

</div>

Is your script running an infinite loop? Event scripts won't automatically be replaced on update if they are still running. (Event scripts should not use unbounded loops--they need to run to completion without waiting indefinitely for external signals.)

---

<div class="post-metadata">

**Author:** ![Thomas\_Gastaldi](https://avatars.discourse-cdn.com/v4/letter/t/47e85d/32.png) [@Thomas\_Gastaldi](https://forum.inductiveautomation.com/u/Thomas_Gastaldi)\
**Post date:** [December 12, 2025, 3:21pm UTC](https://forum.inductiveautomation.com/t/changes-on-library-script-doesnt-apply-to-running-client-instances/112757/8 "2025-12-12T15:21:57Z")

</div>

No, it collects data from PLC Tags and from a database to generate a dataset with information to populate a canvas template. For cycles ranges are defined.

I dont use while cycles inside and the result are written inside both gateway tags and client tags.

The fact is that the only way to stop the old script and to start with the new one is to disconnect the client session or to shutdown it.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 12, 2025, 3:26pm UTC](https://forum.inductiveautomation.com/t/changes-on-library-script-doesnt-apply-to-running-client-instances/112757/9 "2025-12-12T15:26:15Z")

</div>

Perhaps it is time to get support involved. I'm stumped.
