'update_metanodelinks_on_load' no longer working on Knime Server 4.17

Hi,

I just switched to Knime Server 4.17 using 5.3 as the executor. Before that I used Knime-Server 4.16 using 4.7 as the executor.

When I try to execute workflows with outdated versions of shared components I get the following error:

2024-11-05 10:36:11,166 : ERROR : pool-5-thread-1 : 9180d4a7-4c3d-44bc-80d5-64bdd8d1b7d8 : LoadWorkflowTask :  :  : Could not load workflow '/TEST' for 9180d4a7-4c3d-44bc-80d5-64bdd8d1b7d8 from http://<Server-URL>:8080/knime/rest/v4/repository/TEST:data: Cannot invoke "com.knime.enterprise.client.rest.RestServerContent.isAuthenticated()" because "this.m_serverContent" is null
java.lang.NullPointerException: Cannot invoke "com.knime.enterprise.client.rest.RestServerContent.isAuthenticated()" because "this.m_serverContent" is null
	at com.knime.explorer.server.rest.RestServerExplorerFileStore.isAuthenticated(RestServerExplorerFileStore.java:2103)
	at com.knime.explorer.server.rest.RestServerExplorerFileStore.fetchInfo(RestServerExplorerFileStore.java:557)
	at com.knime.explorer.server.rest.RestServerExplorerFileStore.fetchInfo(RestServerExplorerFileStore.java:1)
	at org.knime.workbench.explorer.pathresolve.URIToFileResolveImpl.toDescription(URIToFileResolveImpl.java:317)
	at org.knime.core.util.pathresolve.ResolverUtil.toDescription(ResolverUtil.java:288)
	at org.knime.core.node.workflow.WorkflowLoadHelper.lambda$1(WorkflowLoadHelper.java:447)
	at java.base/java.util.Optional.flatMap(Unknown Source)
	at org.knime.core.node.workflow.WorkflowLoadHelper.createTemplateLoadPersistor(WorkflowLoadHelper.java:447)
	at org.knime.core.node.workflow.TemplateUpdateUtil.loadMetaNodeTemplateInternal(TemplateUpdateUtil.java:323)
	at org.knime.core.node.workflow.TemplateUpdateUtil.loadMetaNodeTemplateIfLocalOrOutdatedOrVersioned(TemplateUpdateUtil.java:289)
	at org.knime.core.node.workflow.TemplateUpdateUtil.fillNodeUpdateStates(TemplateUpdateUtil.java:369)
	at org.knime.core.node.workflow.WorkflowManager.checkUpdateMetaNodeLinkWithCache(WorkflowManager.java:7635)
	at org.knime.core.node.workflow.WorkflowManager.updateMetaNodeLinks(WorkflowManager.java:7947)
	at com.knime.enterprise.executor.JobPool.updateLinkedMetanodes(JobPool.java:536)
	at com.knime.enterprise.executor.amqp.actions.LoadWorkflowTask.loadWorkflow(LoadWorkflowTask.java:217)
	at com.knime.enterprise.executor.amqp.actions.LoadWorkflowTask.lambda$0(LoadWorkflowTask.java:174)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

I have com.knime.server.executor.update_metanodelinks_on_load set to true. This error only occurs when I try to execute a workflow with an outdated shared component. Opening the workflow as a local copy and updating the component manually works fine. Executing workflows, where the shared component is up to date also works fine.

I did not have this issue with the previous versions of Knime Server and Executor. Is this a new bug or can some misconfiguration cause this?

Thanks for your help!

Can you check whether your configured “canonical address” for KNIME Server matches the URL of the linked metanode? Updating only works if they match otherwise the executor does not know where to get the contents.
It shouldn’t result in this kind of error, though.

Sorry for the slow response.

Im not quite sure, what you mean by that? The Components use absolute links with Knime-URLS, right? So in this case “knime://knime-server/…”, as ‘knime-server’ is the mountID.

But the URL in the error message above is the correct canonical address of the server. Trying to open it in a browser also works fine.

I even tried to create a new component to test this behaviour. Here is what I did:

  1. Create a new Workflow in the server repository.
  2. Create a component with any nodes.
  3. Upload the component to the server and link to it using an absolute link.
  4. Save the workflow on the server.
  5. Change the content of the component on the server.
  6. Try to execute the workflow. Normally it should automatically load the new version of the component for this execution. Instead the error message above appears and the job doesn’t run.

Also I just tested setting com.knime.server.canonical-address, but that did not change anything. The executor seems to autodetect the URL anyways. Executor and Server run on the same machine and no proxy is used.

Hi @brni,

I’m sorry to say that our internal investigations did not turn up a general/concrete issue where we can provide direct pointers.
Should this issue still exist, I’d encourage you to reach out to our enterprise support via support@knime.com, ideally mentioning this forum thread and if feasible including any logs after a reproduction attempt (As admin user in the WebPortal: Monitoring > Logs).

While likely unrelated, we are aware of one niche bug that relates to a capitalization change of a few nodes, which can lead to issues if you have Windows clients creating components and Linux executors. To confirm that you are affected by this bug, a problematic current version of a component would also be much appreciated if you can share.

Kind regards
Marvin

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.