[BUG-16695] Ignition 8 - client tag expression with a runscript with call to a third-party module's function

Ignition 8.0.14 or previous
@PGriffith,
It’s a bit a corner case…but it generate lots of error in the designer:

I have a vision client tag expression with a runscript
This runscript use a script function exposed by a third-party modules.
(import system.byes.myFunction)

When the designer is open, client tag script expression begin to run before the third party module is loaded, so I have the following error:

08:38:28.459 [Designer-Startup] INFO designer.main - Downloading... [+0]
08:38:29.556 [Designer-Startup] INFO designer.main - Cleanup... [+1097]
08:38:29.560 [Designer-Startup] INFO designer.main - Initializing UI... [+1101]
08:38:29.682 [Designer-Startup] INFO tags.manager.gwinterface - Tag poll rate changed to 250 ms
08:38:29.683 [DesignerExecEngine-1] INFO tags.subscriptions - Changing connected quality to 'Good'
08:38:31.706 [Designer-Startup] INFO designer.main - Starting module: Vision [+3247]
08:38:32.033 [Designer-Startup] ERROR Scripting.ScriptManager.LMA_TEST - Warning: collision at system.util.modifyTranslation
08:38:32.034 [Designer-Startup] ERROR Scripting.ScriptManager.LMA_TEST - Warning: collision at system.util.translate
08:38:32.035 [Designer-Startup] ERROR Scripting.ScriptManager.LMA_TEST - Warning: collision at system.util.initialize
08:38:33.475 [Designer-Startup] ERROR com.inductiveautomation.factorypmi.application.sqltags.project.ExpressionTagBinding - Error executing expression for tag "softPhoneIsRegistered".
com.inductiveautomation.ignition.common.expressions.ExpressionException: Error executing script for runScript() expression:project.gui.sip.isRegisteredDone
	at com.inductiveautomation.ignition.common.expressions.functions.ScriptFunction.execute(ScriptFunction.java:95)
	at com.inductiveautomation.ignition.common.expressions.FunctionExpression.execute(FunctionExpression.java:69)
	at com.inductiveautomation.factorypmi.application.sqltags.project.ExpressionTagBinding.childInteractionUpdated(ExpressionTagBinding.java:44)
	at com.inductiveautomation.factorypmi.application.sqltags.project.ExpressionTagBinding.startBinding(ExpressionTagBinding.java:33)
	at com.inductiveautomation.factorypmi.application.sqltags.project.ProjectTag.startBindingImpl(ProjectTag.java:199)
	at com.inductiveautomation.factorypmi.application.sqltags.project.ProjectTag.startBinding(ProjectTag.java:186)
	at com.inductiveautomation.factorypmi.application.sqltags.ClientTagFolder.startBinding(ClientTagFolder.java:151)
	at com.inductiveautomation.factorypmi.application.sqltags.ClientTagFolder.startBinding(ClientTagFolder.java:151)
	at com.inductiveautomation.factorypmi.application.sqltags.project.ProjectTagManager.startup(ProjectTagManager.java:467)
	at com.inductiveautomation.ignition.client.sqltags.impl.SubManagerAdapter.startup(SubManagerAdapter.java:269)
	at com.inductiveautomation.ignition.client.tags.impl.ClientTagManagerImpl.addClientTagProvider(ClientTagManagerImpl.java:126)
	at com.inductiveautomation.factorypmi.designer.model.VisionDesignerImpl.handleProjectTagRootUpgrade(VisionDesignerImpl.java:668)
	at com.inductiveautomation.factorypmi.designer.model.VisionDesignerImpl.createRoot(VisionDesignerImpl.java:634)
	at com.inductiveautomation.factorypmi.designer.model.VisionDesignerImpl.startup(VisionDesignerImpl.java:320)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$LoadedModule.startup(IgnitionDesigner.java:1868)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.startupModule(IgnitionDesigner.java:1112)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.lambda$loadProject$6(IgnitionDesigner.java:916)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.loadProject(IgnitionDesigner.java:915)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$StartupProjectDialogHandler.lambda$new$2(IgnitionDesigner.java:1932)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: com.inductiveautomation.ignition.common.script.JythonExecException: Traceback (most recent call last):
  File "<expression:runScript>", line 1, in <module>
ImportError: Error loading module sip: Traceback (most recent call last):
  File "<module:project.gui.sip>", line 19, in <module>
ImportError: Error loading module popup: Traceback (most recent call last):
  File "<module:project.gui.popup>", line 31, in <module>
ImportError: Error loading module constantes: Traceback (most recent call last):
  File "<module:project.gui.constantes>", line 258, in <module>
ImportError: Error loading module util: Traceback (most recent call last):
  File "<module:shared.commun.util>", line 19, in <module>
ImportError: Error loading module constantes: Traceback (most recent call last):
  File "<module:shared.commun.constantes>", line 35, in <module>
ImportError: No module named byes

Error stop after the module has done initializeScriptManager()

08:38:40.489 [Designer-Startup] INFO designer.main - Starting module: Web Browser [+12030]
08:38:40.527 [Designer-Startup] INFO designer.main - Initializing Scripting... [+12068]
08:38:40.541 [Designer-Startup] INFO com.bouyguesenergiesservices.ignition.designer.utils.DesignerHook - initializeScriptManager() - com.bouyguesenergiesservices.utils
08:38:41.001 [Designer-Startup] INFO designer.main - Initializing UI... [+12542]

Before running client tag expression script module, it would be necessary to wait for the
DesignerHook::initializeScriptManager() of each modules loaded.

This is fixed for 8.0.16.

1 Like