'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.