Occasionally nodes show a red warning-sign after execution, which has the following tooltip:
“DataSpec generated by configure does not match spec after execution”
The same shows up as error in the log-console.
two comments concerning this feature:
The mismatch is not critical, so it should be imho rather a warning in the console. Users often call me in for assistance, because they think something important went wrong.
The message is completely out-of-range for any user who does not implement nodes on his own. It’s just confusing and does not indicate what went wrong: At least my non-IT colleagues have no clue what “configure” or “spec” means.
I would suggest to change the logging-type to a warning, and the message to something more end-user friendly.
Usually, the end-user should not see such a message at all. This only happens if the node’s implementor has done something wrong. Does this happen with any of the official KNIME nodes or are these 3rd party nodes?
E.g. R-Snippets if the users forgets to defines some output-attributes.
And 3rd party nodes for sure: Not in all cases it is that easy to predict the output-table structure without doing the actual computation a node is supposed to do during ‘execute’. Thus, the notification of knime should be imho less harsh and easier to understand.
If the node cannot compute the final spec inside configure, then it is supposed to return a ‘null’-spec but not just some half-correct spec, e.g. the Transpose node.
Concerning the R-Snippet node we need to look into that.
Hi Watzlaw,
As far as I can see it, the R Snippet (Local) node does not provide any output spec when the node is configured. Do you have an example where this might fail?
Thanks, Thomas
This error basically tells you that the data table (after execute) does not have the structure as proposed during configure. Since the node is fully executed, you can simply ignore this message. However, we need to understand the problem and fix it, do you have a small setup how we can reproduce this wrong behavior?
I was able to fix this error by re-running the nodes from start to finish. I have not been able to reproduce this error. Thank you though for your quick response!
We assume that the spec of the last execute/configure is the same and the underlying table structure didn't change between configure and execute. If you run this node again, the message disappears. In addition, you can prevent the to run the SQL query during configure by checking the corresponding box in the configurations dialog.
I see a similar error from a Database Looping node:
ERROR Database Looping 0:8 DataSpec generated by configure does not match spec after execution.
This is KNIME 3.3.1.
The problem here is that the results are not returned and I know there are results for some of the queries because I've copied the SQL out of the KNIME.log file and pasted into SQL developer.
Is there a way to prevent the loss of results here?
I'm going to look into the other Database components.
I experienced the same strange behavior today. There were Recursive Loop Start, Joiner and Recursive Loop End nodes in my workflow. The misbehaved subpart of the workflow looked as follows:
Besides the “DataSpec generated by configure does not match spec after execution” complain I found seemingly corrupted data in the output table. Two of its columns contained data that didn’t match any data from the source table.
After some investigation, I figured out the Joiner node produced columns in an order slightly different from the order the columns of the input table. It happened because the Joiner replaced a column from the left table with a column from the right one. Let’s have a look at the configuration:
Well, my suspicion is a changed column order can cause the “not match spec” issue and a Joiner node within a (recursive) loop is a good start point for an investigation.
@s.roughley I get this error if I remove sheet (delete or re-position) I was supposed to read from. Not if file content was just changed. Can you check it?
@jan_lender There is a ticket for this error in Recursive Loop End node and have given it +1.