I was deeply employed with workflow debugging, error investigation and troubleshooting during last couple of weeks. Besides other stuff, I dealt with the console log KNIME produces. I figured out some difficulties that prevent me from getting certain what happened to the workflow while it was executing.
One thing I noticed was I could find log entries that belonged to the nodes in inactive branches. Looking at the log I could get mistaken the node was executed although it couldn’t in reality.
Let’s consider a workflow consisting of a switch construct and let’s execute it. The result is as follows:
Whereas nodes in the top and bottom branch weren’t executed, the node in the middle was. We can see the String Manipulation (Variable)(#20), Database Connector (#19) and Microsoft SQL Server Connector nodes in inactive branches. Their indicators remain white after the workflow is executed up to CASE Switch Model (END)(#24) node. It’s OK and it’s as we expected.
But looking at the console log we could easily get convinced all the nodes mentioned above were executed. Let’s have a look:
2019-05-15 11:11:15,456 INFO CASE Switch Variable (Start) 16:0:0:23 CASE Switch Variable (Start) 16:0:0:23 End execute (0 secs) 2019-05-15 11:11:15,459 INFO String Manipulation (Variable) 16:0:0:20 String Manipulation (Variable) 16:0:0:20 End execute (0 secs) 2019-05-15 11:11:15,460 INFO Microsoft SQL Server Connector 16:0:0:14 Microsoft SQL Server Connector 16:0:0:14 End execute (0 secs) 2019-05-15 11:11:15,461 INFO Database Connector 16:0:0:19 Database Connector 16:0:0:19 End execute (0 secs) 2019-05-15 11:13:22,890 INFO PostgreSQL Connector 16:0:0:1 PostgreSQL Connector 16:0:0:1 End execute (2 mins, 7 secs) 2019-05-15 11:13:22,919 INFO CASE Switch Model (End) 16:0:0:24 CASE Switch Model (End) 16:0:0:24 End execute (0 secs) 2019-05-15 11:13:22,921 INFO WrappedNode Output 16:0:0:9 WrappedNode Output 16:0:0:9 End execute (0 secs) 2019-05-15 11:13:22,922 INFO DB Connection Provider 16:0 DB Connection Provider 16:0 End execute (2 mins, 8 secs)
Well, the log states all the nodes were executed. We can’t see any difference between the PostgreSQL Connector (#1) node’s log entry and the entries of the nodes in inactive branches.
This is very important in case we investigate a workflow running in batch mode which calls another workflow using on of Call Workflow nodes. In that case, we can’t import the workflow’s output because KNIME does not create any as I reported in Batch Mode & Call Local Workflow - where is nested workflow output?