We are investigating updating a server executor from KNIME AP v5.2 to 5.4, and have discovered that the Jython script nodes (of which we have many, in workflows which have run for 10+ years on the server with very little modification!) no longer work.
The error message in the log is always as follows:
2025-09-09 11:04:49,502 : ERROR : KNIME-Worker-35-JPython Script 1:1 (Legacy) 3:394:0:394 : : Node : JPython Script 1:1 (Legacy) : 3:394:0:394 : Execute failed: Jython error (see console for error log).
java.lang.Exception: Jython error (see console for error log).
at org.knime.ext.jython.PythonScriptNodeModel.execute(PythonScriptNodeModel.java:257)
at org.knime.core.node.NodeModel.execute(NodeModel.java:816)
at org.knime.core.node.NodeModel.executeModel(NodeModel.java:592)
at org.knime.core.node.Node.invokeFullyNodeModelExecute(Node.java:1286)
at org.knime.core.node.Node.execute(Node.java:1049)
at org.knime.core.node.workflow.NativeNodeContainer.performExecuteNode(NativeNodeContainer.java:605)
at org.knime.core.node.exec.LocalNodeExecutionJob.mainExecute(LocalNodeExecutionJob.java:98)
at org.knime.core.node.workflow.NodeExecutionJob.internalRun(NodeExecutionJob.java:198)
at org.knime.core.node.workflow.NodeExecutionJob.run(NodeExecutionJob.java:117)
at org.knime.core.util.ThreadUtils$RunnableWithContextImpl.runWithContext(ThreadUtils.java:367)
at org.knime.core.util.ThreadUtils$RunnableWithContext.run(ThreadUtils.java:221)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at org.knime.core.util.ThreadPool$MyFuture.run(ThreadPool.java:123)
at org.knime.core.util.ThreadPool$Worker.run(ThreadPool.java:246)
Caused by: Traceback (innermost last):
File "<>", line 52, in ?
NameError: AppendedColumnRow
at org.python.core.Py.NameError(Unknown Source)
at org.python.core.PyFrame.getglobal(Unknown Source)
at org.python.core.PyFrame.getname(Unknown Source)
at org.python.pycode._pyx1.f$0(<>:52)
at org.python.pycode._pyx1.call_function(<>)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyCode.call(Unknown Source)
at org.python.core.Py.runCode(Unknown Source)
at org.python.core.Py.exec(Unknown Source)
at org.python.util.PythonInterpreter.exec(Unknown Source)
at org.knime.ext.jython.PythonScriptNodeModel.execute(PythonScriptNodeModel.java:252)
... 14 more
This seems to be the case for AP v5.3 and AP v5.4.
I know that the Jython scripting extension is now marked ‘legacy’, but previously it has been the case that legacy nodes should carry on working (it’s in the Noding Guidelines!) Is there a fix for this or do we need to re-write workflows to eliminate these nodes?
(For anyone wondering what they even are and why they might be used, they were for a long time the only way to do anything in Python within KNIME, and I think were donated by Tripos, a cheminformatics company)
Steve
