Missing Node (Row Splitter) reported although it is there

Dear KNIMErs,

I ran into a strange issue in any version since 5.2.3: in some workflows, KNIME reports missing nodes, although another node of exactly the same type is present in the workflow.

In this specific case it is the Row Splitter Node, please see screenshot:

Also, if try to ‘repair’ this by following the ‘Do you want to install the missing node extension?’ process, it refers back to the Base Nodes, tries to install them but the problem still persists.

image

My understanding was that

  • A node cannot be missing and present at the same time (ha, is this KNIME’s version of Schroedinger’s cat?? :wink: )
  • Base Nodes should be installed by default (but I might be mistaken here)
  • Installing the Base Nodes Extension should finally solve the problem (but it does not, see above)

The screenshots I shared with you come from KNIME 5.2.3 (although the install extension dialogue shows 5.2.2)

That’s an interesting problem :astonished:. Could you share the workflow or even just a copy of it with only these two nodes? The knime.log might also be interesting to look at in order to find out what could have gone wrong when loading the base nodes plugin.

I think the dialog pops up because it just sees “node/extension missing” (i.e. not loaded/activated), therefore suggests to install it. It does not know more about why the node is missing. Installation would only solve the problem if it really is the case that the extension is not installed, but the base nodes extension is shipped with every AP installation. The “missing node? → install extension” routine just does not know that.

3 Likes

Thanks a lot for your quick response @hotzm

I basically experienced this with the workflow that MartinDDD shared in the second post to this conversation:

I also somehow ‘reported’ (unfortunately in the wrong subforum) here in this post, concerning the Rule Engine:

Having 2 different workflows from two different people (one by Martin, see above, one directly created by myself) what does that mean?

Is that a local problem to my machine?

Hmm weird. Maybe it has to do with me using the Row Filter modern UI and the Row Filter (deprecated) in the same WF? And this then confuses @kowisoft 's KNIME because it is V5.2 and the facelift was only done with 5.3?

1 Like

Thanks for the hint! Since MartinDDD provided a screenshot I think he used 5.3 to build the workflow. You can see the new Row Splitter and the old, deprecated, Row Splitter:

The one that is missing for you is the new one, because it is not available in 5.2. Making the confusion perfect is the fact that the old one was not deprecated in 5.2 yet, so both are called “Row Splitter” for you. If you go into the workflow’s XML definition, you should see the missing one has the org.knime.base.node.preproc.filter.row3.RowSplitterNodeFactory as factory, and the non-missing one has org.knime.base.node.preproc.filter.row.RowFilter2PortNodeFactory. You can also check by dragging the nodes from Hub: deprecated Row Splitter, new Row Splitter.

So the problem is, that AP is not “forwards-compatible”: if you load a workflow from a “future” version, the behavior is not really “well defined” – in general anything can happen. It should also show a warning popup when opening such a workflow from a newer version in an older version of AP.

For this particular instance, I think it would make sense to not offer the install, if it does not solve the problem and instead show some better error message like “This node is missing since the workflow was created in a newer version (5.3) and this node is only available in version 5.3 and later. The current version is 5.2.5.” (for the newer nodes we have this information). This should be less confusing.

I’ll have a look what is up with the Rule Engine topic separately. If you are certain that you opened a 5.2 workflow in 5.3 (and not vice-versa), then that’s a separate problem.


@MartinDDDD you are correct and beat me by a minute :smiley:

3 Likes

On second thought, the old AP version does not know in which version the missing node is available, obviously. But since it contains the factory ID, we could at least link to Hub, where this version info is available.

3 Likes

Let’s say you confirmed my theory xD

Maybe some explanation as to why I chose to use both, old and new, versions of the row splitter:

Especially in the context of recursive loops it is very beneficial if you can easily “chop off” a part of a table - in this example the supplier table where only the first supplier of the remaining table of suppliers is “processed”.

The old row splitter makes it very easy by using the row number feature, which unfortunately is not available anymore as far as I know in the new version…

I know there are alternatives, but I have not yet found one that is as convenient…

1 Like

Hey @MartinDDDD,

thanks for the explanation. I am probably missing something, but there is a Row number splitting feature in the new Row Splitter.

Sidenote: I guess we need to mark these ‘special’ columns more obvious.

Greetings,
Daniel

1 Like

That I have missed indeed… thanks for making me aware of that - I agree that some sort of “transition documentation” could prove very useful!

1 Like