# 8.1 script reloading issue

**URL:** <https://forum.inductiveautomation.com/t/8-1-script-reloading-issue/110990>\
**Category:** Ignition\
**Tags:** ignition81\
**Created:** [September 25, 2025, 8:11pm UTC](https://forum.inductiveautomation.com/t/8-1-script-reloading-issue/110990 "2025-09-25T20:11:15Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![mazeyrat](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mazeyrat/32/10955_2.png) [@mazeyrat](https://forum.inductiveautomation.com/u/mazeyrat)\
**Post date:** [September 25, 2025, 8:11pm UTC](https://forum.inductiveautomation.com/t/8-1-script-reloading-issue/110990/1 "2025-09-25T20:11:15Z")

</div>

**Ignition 8.1.49**

Project A \> Project B \> Project C

Each time I made a script change in project A, **Tag expression script using runscript are broken** and probably other side effect in script manager.  
I need to restart the gateway.  
The script modified in project A contain lots of global dictionnary with settings.  
The script modified in Project A is broadly used in script from project B and C.

**I suspect it is the race condition issue on loading script ?**  
Nothing suspect in thread dump or blocked thread.

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

```python
org.python.core.PyException: TypeError: unhashable type: 'dict'

at org.python.core.Py.TypeError(Py.java:234)

at org.python.core.PyDictionary.dict ___hash__ (PyDictionary.java:828)

at org.python.core.PyDictionary.hashCode(PyDictionary.java:810)

at java.base/java.util.concurrent.ConcurrentHashMap.get(Unknown Source)

at org.python.core.PyStringMap. __finditem__ (PyStringMap.java:129)

at com.inductiveautomation.ignition.common.script.ScriptManager.lambda$clearProjectScriptModules$6(ScriptManager.java:661)

at java.base/java.lang.Iterable.forEach(Unknown Source)

at com.inductiveautomation.ignition.common.script.ScriptManager.clearProjectScriptModules(ScriptManager.java:660)

at com.inductiveautomation.ignition.common.script.ScriptManager.shutdown(ScriptManager.java:167)

at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle.createScriptConfig(ProjectScriptLifecycle.java:279)

at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle.startupScriptConfig(ProjectScriptLifecycle.java:235)

at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle.restartScriptConfig(ProjectScriptLifecycle.java:231)

at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle.onResourcesModified(ProjectScriptLifecycle.java:733)

at com.inductiveautomation.ignition.gateway.project.ProjectLifecycle$LifecycleResourceListener.resourcesModified(ProjectLifecycle.java:176)

at com.inductiveautomation.ignition.common.project.AbstractProject.notifyResourceListeners(AbstractProject.java:351)

at com.inductiveautomation.ignition.common.project.AbstractProject.updateEffectiveState(AbstractProject.java:153)

at com.inductiveautomation.ignition.common.project.RuntimeProject.applyChange(RuntimeProject.java:274)

at com.inductiveautomation.ignition.gateway.project.ProjectLifecycleFactory$1.lambda$updateOrStartAffectedProjects$5(ProjectLifecycleFactory.java:185)

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

at com.inductiveautomation.ignition.gateway.project.ProjectLifecycleFactory$1.updateOrStartAffectedProjects(ProjectLifecycleFactory.java:165)

at com.inductiveautomation.ignition.gateway.project.ProjectLifecycleFactory$1.projectUpdated(ProjectLifecycleFactory.java:143)

at com.inductiveautomation.ignition.gateway.project.BaseProjectManager.doProjectUpdatedNotification(BaseProjectManager.java:1055)

at com.inductiveautomation.ignition.gateway.project.BaseProjectManager.lambda$fireProjectUpdated$25(BaseProjectManager.java:1005)

at com.inductiveautomation.ignition.gateway.project.BaseProjectManager.lambda$submitToQueue$22(BaseProjectManager.java:983)

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

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)

```

---

<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:** [September 25, 2025, 8:14pm UTC](https://forum.inductiveautomation.com/t/8-1-script-reloading-issue/110990/2 "2025-09-25T20:14:04Z")

</div>

Almost certainly this:

> [@\[IGN-6503\]Project Library Script Initialization Races](https://forum.inductiveautomation.com/t/ign-6503-project-library-script-initialization-races/98636):
>
> Are you annoyed by pseudo-random breakage in Ignition project library scripting? Odd top-level constants being garbled, or operations in the top level that have side effects running twice? Or more? Not happening much, but always around project edits, and sometimes even on gateway restart? Yeah, me too. frowning_face Poking around under the hood back in the spring, for a module development task, I ran across some problematic IA bytecode and pinged some people. But it went nowhere, as I co…

Fixed in v8.3. Deemed too risky a fix for v8.1 (first attempt was an ugly disaster).

---

<div class="post-metadata">

**Author:** ![mazeyrat](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mazeyrat/32/10955_2.png) [@mazeyrat](https://forum.inductiveautomation.com/u/mazeyrat)\
**Post date:** [September 25, 2025, 8:35pm UTC](https://forum.inductiveautomation.com/t/8-1-script-reloading-issue/110990/3 "2025-09-25T20:35:28Z")

</div>

I tried your workaround but I created deadlock and no time to investigate or double check so I remove the change.  
I probably miss something...  
I will try again the workaround if no change come in 8.1 about this. We have some 8.1 projects not planned to upgrade in 8.3 before months or years...

---

<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:** [September 25, 2025, 8:58pm UTC](https://forum.inductiveautomation.com/t/8-1-script-reloading-issue/110990/4 "2025-09-25T20:58:46Z")

</div>

Yeah, I can basically guarantee we're not going to try to fix stuff like this in 8.1, so either work around it or update.
