KAP 5.4 Table Does Not Display Properly

Randomly I can’t get a table to display. Closing the workflow and reopening shows the table at the bottom of the work space but the popup table (which I prefer) doesn’t appear. KAP 5.3.3 seems to work fine.


Hi @rfeigel ,

thanks for reporting. We are investigating the issue (internal reference NXT-3202) and it looks like we were able to reproduce it.

Thanks again,
nan

3 Likes

Any progress? KAP 5.4 is practically unusable due to this intermittent problem.

I hate to be a pest, but any progress? This is a pretty serious usability issue.

2 Likes

Hi,

from what I see, the issue has been resolved and will be part of the 5.4.1 release. However, I there has not been a decision for a release date.
If you use the Nightly, would you mind to double check whether the problem is solved there on you setup?

Sorry for the late reply,
nan

3 Likes

Hi @nan , I’m wondering if this is related…

Today I have been executing a long-running nested loop of about 700 iterations (on the outer loop), and when I came back to check on progress, KNIME had mysteriously stopped processing at iteration 280. There are however no errors.

As you can see in the attached screenshot, the Loop End still thinks it is queued rather than showing a red traffic light.

As you can see, the Node Monitor is also reporting no issues.

The problem appears to occur at the GroupBy marked in red. This has stopped because it does not think it has the required GroupBy column in the data, but this in turn appears to be a knock-on from the fact that Table Manipulator has failed to output any rows, even though it is not showing the “empty table” symbol, and in fact there are rows for it to output.

If I inspect the config for Table Manipulator though it is clear that it should be outputting data, and the data does contain the column expected by GroupBy, but for some reason it has suddenly “gone for lunch”!

This isn’t the first similar issue I’ve had specifically with Table Manipulator in KNIME 5.4, but it’s the first time I’ve found something worth reporting back. Unfortunately the flow cannot be shared, but I wonder if anything like this is on your radar, or likely to be linked to the issue above raised by @rfeigel.

I looked in the KNIME log and ignoring all the noise of the WARN messages related to the general flow , KNIME suddenly hits an error, where it reports a memory leak, so it looks like a memory issue. For the record I am currently running on a pitiful laptop with only 16GB main memory, and 10G available to KNIME.

KNIME 5.4, Windows 10

here is the ERROR part of the log:


2025-01-08 11:18:43,686 : ERROR : KNIME-Worker-218-Loop End 8:156 :  : LocalNodeExecutionJob : Loop End : 8:156 : Caught "IllegalStateException": Memory was leaked by query. Memory leaked: (6208)
Allocator(ArrowColumnStore) 0/6208/74121216/1469054976 (res/actual/peak/limit)

java.lang.IllegalStateException: Memory was leaked by query. Memory leaked: (6208)
Allocator(ArrowColumnStore) 0/6208/74121216/1469054976 (res/actual/peak/limit)

	at org.apache.arrow.memory.BaseAllocator.close(BaseAllocator.java:477)
	at org.knime.core.columnar.arrow.AbstractArrowBatchReadable.close(AbstractArrowBatchReadable.java:100)
	at org.knime.core.columnar.arrow.ArrowBatchStore.close(ArrowBatchStore.java:117)
	at org.knime.core.columnar.cache.data.ReadDataCache.close(ReadDataCache.java:361)
	at org.knime.core.columnar.cache.writable.BatchWritableCache.close(BatchWritableCache.java:297)
	at org.knime.core.columnar.data.dictencoding.DictEncodedBatchWritableReadable.close(DictEncodedBatchWritableReadable.java:108)
	at org.knime.core.columnar.cache.object.ObjectCache.close(ObjectCache.java:197)
	at org.knime.core.data.columnar.table.BatchSizeRecorder$BatchSizeAugmentedReadable.close(BatchSizeRecorder.java:162)
	at org.knime.core.data.columnar.table.DefaultColumnarBatchStore.close(DefaultColumnarBatchStore.java:426)
	at org.knime.core.data.columnar.table.ColumnarRowReadTable.close(ColumnarRowReadTable.java:213)
	at org.knime.core.data.columnar.table.AbstractColumnarContainerTable.clear(AbstractColumnarContainerTable.java:218)
	at org.knime.core.node.BufferedDataTable.clearSingle(BufferedDataTable.java:972)
	at org.knime.core.node.Node.disposeTables(Node.java:1772)
	at org.knime.core.node.Node.cleanOutPorts(Node.java:1736)
	at org.knime.core.node.workflow.NativeNodeContainer.cleanOutPorts(NativeNodeContainer.java:632)
	at org.knime.core.node.workflow.NativeNodeContainer.performReset(NativeNodeContainer.java:626)
	at org.knime.core.node.workflow.SingleNodeContainer.rawReset(SingleNodeContainer.java:553)
	at org.knime.core.node.workflow.WorkflowManager.invokeResetOnSingleNodeContainer(WorkflowManager.java:5222)
	at org.knime.core.node.workflow.WorkflowManager.restartLoop(WorkflowManager.java:3806)
	at org.knime.core.node.workflow.WorkflowManager.doAfterExecution(WorkflowManager.java:3682)
	at org.knime.core.node.workflow.NodeContainer.notifyParentExecuteFinished(NodeContainer.java:689)
	at org.knime.core.node.workflow.NodeExecutionJob.internalRun(NodeExecutionJob.java:235)
	at org.knime.core.node.workflow.NodeExecutionJob.run(NodeExecutionJob.java:117)
	at org.knime.core.util.ThreadUtils$RunnableWithContextImpl.runWithContext(ThreadUtils.java:369)
	at org.knime.core.util.ThreadUtils$RunnableWithContext.run(ThreadUtils.java:223)
	at
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at org.knime.core.util.ThreadPool$MyFuture.run(ThreadPool.java:123)
	at org.knime.core.util.ThreadPool$Worker.run(ThreadPool.java:246)
2025-01-08 12:32:32,959 : ERROR : main :  : KnimeBrowserView :  :  : %cerror%c Unhandled rejection:: 
      background: #c0392b;
      border-radius: 0.5em;
      color: white;
      font-weight: bold;
      padding: 2px 0.5em;
      [object Object] (source: http://org.knime.ui.java/assets/index-Bnh0E6L6.js; line: 87)
2025-01-08 12:32:32,964 : ERROR : main :  : KnimeBrowserView :  :  : Uncaught (in promise) #<Object> (source: http://org.knime.ui.java/workflow/LATAM%20-%20Read%20Contract%20Terms_e1c53f52-45fe-45d0-acbd-785ea8ade6a6/root; line: 1)
2025-01-08 13:01:52,009 : ERROR : main :  : KnimeBrowserView :  :  : %cerror%c Error captured hook ::  
      background: #c0392b;
      border-radius: 0.5em;
      color: white;
      font-weight: bold;
      padding: 2px 0.5em;
      [object Object] (source: http://org.knime.ui.java/assets/index-Bnh0E6L6.js; line: 87)
2 Likes

Hi @takbb ,

ouch, that should clearly not happen. As far as I can tell, it is not related to the problem raised in this thread. Definitely something developers should look into.

Thank you for reporting,
nan

1 Like

Hi @nan, thanks for looking at that and hopefully there is something for the developers to go on from the error log snippet I posted. I wondered if it was anything to do with the Columnar Backend Off-Heap memory. This was set down quite low at around 1200 or something like that. I increased it to 4096 (not really knowing if it would help) and restarted KNIME. I know this heap memory got mentioned elsewhere but I don’t know if I had previously set it to test it out, or if that low value was previously automatically set.

Given that it appeared memory-related, I also added a garbage collection call at the end of each loop iteration, using Java Edit variable and a call to System.gc(). Possibly overkill, but every little helps. :wink:

Anyway I reran the workflow without further problems. That may all be coincidental.


This morning, on a different workflow (one originally from KNIME 4.7.8), running again in KNIME 5.4, I did encounter what I think is likely to be the same issue as @rfeigel.

Here the table data output from DB Query Reader is completely blank, but as can be seen from the lack of “no rows” markers on the downstream nodes, there is data and if I click on any of the other nodes, it displays their data correctly.

The popup error message is:

{
  "app": "KnimeUI",
  "vueVersion": "3.4.21",
  "timestamp": "2025-01-09T12:29:33.016Z",
  "errorContext": "An unexpected error occurred",
  "problemDetails": {
    "title": "class org.knime.core.ui.wrapper.SingleNodeContainerWrapper cannot be cast to class org.knime.core.ui.wrapper.NativeNodeContainerWrapper (org.knime.core.ui.wrapper.SingleNodeContainerWrapper and org.knime.core.ui.wrapper.NativeNodeContainerWrapper are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @2120c9ef)",
    "details": []
  },
  "error": {
    "stack": "Error: class org.knime.core.ui.wrapper.SingleNodeContainerWrapper cannot be cast to class org.knime.core.ui.wrapper.NativeNodeContainerWrapper (org.knime.core.ui.wrapper.SingleNodeContainerWrapper and org.knime.core.ui.wrapper.NativeNodeContainerWrapper are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @2120c9ef)\n    at Ve (http://org.knime.ui.java/assets/index-Bnh0E6L6.js:45:37561)\n    at http://org.knime.ui.java/assets/index-Bnh0E6L6.js:45:26908\n    at async lo.getNodeRecommendations (http://org.knime.ui.java/assets/index-Bnh0E6L6.js:279:26523)",
    "message": "class org.knime.core.ui.wrapper.SingleNodeContainerWrapper cannot be cast to class org.knime.core.ui.wrapper.NativeNodeContainerWrapper (org.knime.core.ui.wrapper.SingleNodeContainerWrapper and org.knime.core.ui.wrapper.NativeNodeContainerWrapper are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @2120c9ef)",
    "cause": {
      "stack": "Error: class org.knime.core.ui.wrapper.SingleNodeContainerWrapper cannot be cast to class org.knime.core.ui.wrapper.NativeNodeContainerWrapper (org.knime.core.ui.wrapper.SingleNodeContainerWrapper and org.knime.core.ui.wrapper.NativeNodeContainerWrapper are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @2120c9ef)\n    at new r (http://org.knime.ui.java/assets/index-Bnh0E6L6.js:36:121202)\n    at t.convertJSONToRPCError (http://org.knime.ui.java/assets/index-Bnh0E6L6.js:36:121430)\n    at t.processResult (http://org.knime.ui.java/assets/index-Bnh0E6L6.js:36:123220)\n    at t.resolveRes (http://org.knime.ui.java/assets/index-Bnh0E6L6.js:36:123567)\n    at t.resolveResponse (http://org.knime.ui.java/assets/index-Bnh0E6L6.js:36:122470)\n    at cJ.sendData (http://org.knime.ui.java/assets/index-Bnh0E6L6.js:37:20785)\n    at async Object.call (http://org.knime.ui.java/assets/index-Bnh0E6L6.js:45:17921)\n    at async lo.getNodeRecommendations (http://org.knime.ui.java/assets/index-Bnh0E6L6.js:279:26523)",
      "message": "class org.knime.core.ui.wrapper.SingleNodeContainerWrapper cannot be cast to class org.knime.core.ui.wrapper.NativeNodeContainerWrapper (org.knime.core.ui.wrapper.SingleNodeContainerWrapper and org.knime.core.ui.wrapper.NativeNodeContainerWrapper are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @2120c9ef)",
      "code": -32601,
      "data": {
        "name": "java.lang.ClassCastException",
        "stackTrace": "java.lang.ClassCastException: class org.knime.core.ui.wrapper.SingleNodeContainerWrapper cannot be cast to class org.knime.core.ui.wrapper.NativeNodeContainerWrapper (org.knime.core.ui.wrapper.SingleNodeContainerWrapper and org.knime.core.ui.wrapper.NativeNodeContainerWrapper are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @2120c9ef)\r\n\tat org.knime.core.ui.wrapper.NativeNodeContainerWrapper.wrap(NativeNodeContainerWrapper.java:78)\r\n\tat org.knime.gateway.impl.webui.NodeRecommendations.getRecommendationsFor(NodeRecommendations.java:173)\r\n\tat org.knime.gateway.impl.webui.NodeRecommendations.getNodeRecommendations(NodeRecommendations.java:134)\r\n\tat org.knime.gateway.impl.webui.service.DefaultNodeRepositoryService.getNodeRecommendations(DefaultNodeRepositoryService.java:150)\r\n\tat org.knime.gateway.impl.webui.jsonrpc.service.JsonRpcNodeRepositoryServiceWrapper.getNodeRecommendations(JsonRpcNodeRepositoryServiceWrapper.java:100)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)\r\n\tat java.base/java.lang.reflect.Method.invoke(Unknown Source)\r\n\tat com.googlecode.jsonrpc4j.JsonRpcBasicServer.invoke(JsonRpcBasicServer.java:478)\r\n\tat com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleObject(JsonRpcBasicServer.java:349)\r\n\tat com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleJsonNodeRequest(JsonRpcBasicServer.java:274)\r\n\tat com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleRequest(JsonRpcBasicServer.java:242)\r\n\tat org.knime.gateway.impl.jsonrpc.JsonRpcRequestHandler.handle(JsonRpcRequestHandler.java:104)\r\n\tat org.knime.ui.java.browser.lifecycle.Init.lambda$13(Init.java:294)\r\n\tat com.equo.comm.common.MessageHandler.processReceivedEventMessage(MessageHandler.java:131)\r\n\tat com.equo.comm.ee.provider.service.ChromiumService.receiveMessage(ChromiumService.java:98)\r\n\tat com.equo.comm.ee.provider.CommunicationManagerChromiumImpl.receiveMessage(CommunicationManagerChromiumImpl.java:48)\r\n\tat com.equo.chromium.swt.internal.spi.CommRouterHandler.handleRequest(CommRouterHandler.java:33)\r\n\tat com.equo.chromium.swt.internal.spi.CommRouterHandler.lambda$1(CommRouterHandler.java:51)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)\r\n\tat java.base/java.lang.Thread.run(Unknown Source)\r\n"
      }
    },
    "data": {
      "name": "java.lang.ClassCastException",
      "stackTrace": "java.lang.ClassCastException: class org.knime.core.ui.wrapper.SingleNodeContainerWrapper cannot be cast to class org.knime.core.ui.wrapper.NativeNodeContainerWrapper (org.knime.core.ui.wrapper.SingleNodeContainerWrapper and org.knime.core.ui.wrapper.NativeNodeContainerWrapper are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @2120c9ef)\r\n\tat org.knime.core.ui.wrapper.NativeNodeContainerWrapper.wrap(NativeNodeContainerWrapper.java:78)\r\n\tat org.knime.gateway.impl.webui.NodeRecommendations.getRecommendationsFor(NodeRecommendations.java:173)\r\n\tat org.knime.gateway.impl.webui.NodeRecommendations.getNodeRecommendations(NodeRecommendations.java:134)\r\n\tat org.knime.gateway.impl.webui.service.DefaultNodeRepositoryService.getNodeRecommendations(DefaultNodeRepositoryService.java:150)\r\n\tat org.knime.gateway.impl.webui.jsonrpc.service.JsonRpcNodeRepositoryServiceWrapper.getNodeRecommendations(JsonRpcNodeRepositoryServiceWrapper.java:100)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)\r\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)\r\n\tat java.base/java.lang.reflect.Method.invoke(Unknown Source)\r\n\tat com.googlecode.jsonrpc4j.JsonRpcBasicServer.invoke(JsonRpcBasicServer.java:478)\r\n\tat com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleObject(JsonRpcBasicServer.java:349)\r\n\tat com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleJsonNodeRequest(JsonRpcBasicServer.java:274)\r\n\tat com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleRequest(JsonRpcBasicServer.java:242)\r\n\tat org.knime.gateway.impl.jsonrpc.JsonRpcRequestHandler.handle(JsonRpcRequestHandler.java:104)\r\n\tat org.knime.ui.java.browser.lifecycle.Init.lambda$13(Init.java:294)\r\n\tat com.equo.comm.common.MessageHandler.processReceivedEventMessage(MessageHandler.java:131)\r\n\tat com.equo.comm.ee.provider.service.ChromiumService.receiveMessage(ChromiumService.java:98)\r\n\tat com.equo.comm.ee.provider.CommunicationManagerChromiumImpl.receiveMessage(CommunicationManagerChromiumImpl.java:48)\r\n\tat com.equo.chromium.swt.internal.spi.CommRouterHandler.handleRequest(CommRouterHandler.java:33)\r\n\tat com.equo.chromium.swt.internal.spi.CommRouterHandler.lambda$1(CommRouterHandler.java:51)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)\r\n\tat java.base/java.lang.Thread.run(Unknown Source)\r\n"
    }
  }
}

In the KNIME log, it adds the additional console message:
2025-01-09 12:37:04,167 : ERROR : main : : KnimeBrowserView : : : %cerror%c RPC Client:: Error RPC request

If I get a chance I will try the nightly build, as you earlier suggested, but with the issue being intermittent, it will be difficult to say if it is fixed on a quick test, and I don’t want to be using the nightly for any length of time with my actual production work for obvious reasons.

I thought I’d add this though again to see if the above error is likely covered within the “expected” fix for this issue.

1 Like

Hi @takbb,
Thank you for sharing your findings! The low Columnar Backend Off-Heap memory hint was very helpful. It led me to discover a rare race condition in one of our caches, triggered by concurrent memory alerts on another thread. While unlikely, it can surface in workflows with frequent memory pressure. We’ll post an update here once a fix is available.

4 Likes

Pleased to be of assistance @bwilhelm ! :slight_smile:

@nan and @rfeigel Now, this morning was interesting… I had another case of no data displayed in the output table, this time from a DB Looping node, even though the data could be viewed for the subsequent Duplicate Row Filter node
image

and once again the log showed a ClassCastException:

2025-01-10 10:36:04,603 : WARN  : comm-pool-thread-24 :  : JsonRpcErrorResolver :  :  : An unexpected json rpc error occurred
java.lang.ClassCastException: class org.knime.core.ui.wrapper.SingleNodeContainerWrapper cannot be cast to class org.knime.core.ui.wrapper.NativeNodeContainerWrapper (org.knime.core.ui.wrapper.SingleNodeContainerWrapper and org.knime.core.ui.wrapper.NativeNodeContainerWrapper are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @2cf09d47)
	at org.knime.core.ui.wrapper.NativeNodeContainerWrapper.wrap(NativeNodeContainerWrapper.java:78)
	at org.knime.core.ui.wrapper.NodeContainerWrapper.wrap(NodeContainerWrapper.java:116)
	at org.knime.core.webui.node.NodeWrapper.getNCUI(NodeWrapper.java:82)
	at org.knime.gateway.api.entity.UIExtensionEnt.<init>(UIExtensionEnt.java:104)
	at org.knime.gateway.api.entity.UIExtensionEnt.<init>(UIExtensionEnt.java:92)
	at org.knime.gateway.api.entity.PortViewEnt.<init>(PortViewEnt.java:77)
	at org.knime.gateway.impl.webui.service.DefaultPortService.getPortView(DefaultPortService.java:133)
	at org.knime.gateway.impl.webui.jsonrpc.service.JsonRpcPortServiceWrapper.getPortView(JsonRpcPortServiceWrapper.java:130)
	at jdk.internal.reflect.GeneratedMethodAccessor270.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at com.googlecode.jsonrpc4j.JsonRpcBasicServer.invoke(JsonRpcBasicServer.java:478)
	at com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleObject(JsonRpcBasicServer.java:349)
	at com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleJsonNodeRequest(JsonRpcBasicServer.java:274)
	at com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleRequest(JsonRpcBasicServer.java:242)
	at org.knime.gateway.impl.jsonrpc.JsonRpcRequestHandler.handle(JsonRpcRequestHandler.java:104)
	at org.knime.ui.java.browser.lifecycle.Init.lambda$13(Init.java:294)
	at com.equo.comm.common.MessageHandler.processReceivedEventMessage(MessageHandler.java:131)
	at com.equo.comm.ee.provider.service.ChromiumService.receiveMessage(ChromiumService.java:98)
	at com.equo.comm.ee.provider.CommunicationManagerChromiumImpl.receiveMessage(CommunicationManagerChromiumImpl.java:48)
	at com.equo.chromium.swt.internal.spi.CommRouterHandler.handleRequest(CommRouterHandler.java:33)
	at com.equo.chromium.swt.internal.spi.CommRouterHandler.lambda$1(CommRouterHandler.java:51)
	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)

so… the conversation with @bwilhelm about Columnar Backend Off-Heap memory got me wondering what would happen if I changed the backend to Row-based instead. So I gave that a try

and behold, the data pane suddenly showed me the data from the DB Looping node. I switched back to Columnar Backend, and the data remained. So in this case at least, no exiting the workflow or restarting of KNIME was required to view the data.
(KNIME 5.4 / Windows 10 / 10G heap memory available of 16G system memory / Columnar Off-Heap memory=4096)

1 Like

I tried your workaround. It didn’t work for me.

1 Like

Sadly, it just happened to me again too, but this time I didn’t get so lucky, and in fact I was already set to “Row based backend” which I thought I’d try out just in case.

Oddly now that its been happening to me, it’s appearing more often. I don’t know what changed. I hardly had a problem with it before. Perhaps “something special” about my current workflows…

I guess we’ll have to wait for 5.4.1 which supposedly has a fix. I’m loathe to use nightly builds.

1 Like

Internal ticket ID: NXT-3202
Summary: Port View not shown for Data Table Output Ports
Fix version(s): 5.4.1, 5.5.0
Other related open ticket(s): AP-20948

2 Likes