Execute failed: Cannot read file "knime_container_20200301_1905559478659870280.bin.snappy"

Things are getting stranger.

A customer is running a workflow related to the same project (but an entirely different workflow). The common denominator is, that we also have a loop and we need to process something between 60,000 … 160,000 rows.

The client runs on a Windows machine, also the latest KNIME version. This specific workflow starts with a “Lists Files” node where I list all .svg files within a directory, and then essentially convert them to .png within the loop, followed by some custom Java snippet which crops away white space from the .png files.

I realize that both of these workflows (downloading S3 files, converting svg to png) should have probably better be done using some scripting language, but KNIME was established in the environment and we had some existing workflows on which we could built upon, so we went for that option.

This second workflow produced the following error:

2020-03-02 16:58:16,297 : WARN  : KNIME-Worker-22-Java Snippet 0:4 :  : Node : Image Writer (Table Column) : 0:7 : Output directory 'C:\Program Files\KNIME\missing' does not exist
2020-03-02 16:58:16,927 : ERROR : KNIME-Worker-22-Variable Loop End 0:12 :  : LocalNodeExecutionJob : Variable Loop End : 0:12 : Caught "NullPointerException": null
java.lang.NullPointerException
	at java.util.ArrayDeque.addLast(ArrayDeque.java:249)
	at org.xerial.snappy.buffer.CachedBufferAllocator.release(CachedBufferAllocator.java:77)
	at org.xerial.snappy.SnappyOutputStream.close(SnappyOutputStream.java:424)
	at java.io.FilterOutputStream.close(FilterOutputStream.java:159)
	at org.knime.core.data.container.BlockableOutputStream.close(BlockableOutputStream.java:160)
	at java.io.FilterOutputStream.close(FilterOutputStream.java:159)
	at org.knime.core.data.container.LongUTFDataOutputStream.close(LongUTFDataOutputStream.java:90)
	at org.knime.core.data.container.DCObjectOutputVersion2.close(DCObjectOutputVersion2.java:152)
	at org.knime.core.data.container.DefaultTableStoreWriter.close(DefaultTableStoreWriter.java:146)
	at org.knime.core.data.container.Buffer.performClear(Buffer.java:1983)
	at org.knime.core.data.container.Buffer$SoftRefLRULifecycle.onClear(Buffer.java:2739)
	at org.knime.core.data.container.Buffer.clear(Buffer.java:1962)
	at org.knime.core.data.container.ContainerTable.clear(ContainerTable.java:266)
	at org.knime.core.data.container.RearrangeColumnsTable.clear(RearrangeColumnsTable.java:670)
	at org.knime.core.node.BufferedDataTable.clearSingle(BufferedDataTable.java:947)
	at org.knime.core.node.Node.cleanOutPorts(Node.java:1623)
	at org.knime.core.node.workflow.NativeNodeContainer.cleanOutPorts(NativeNodeContainer.java:586)
	at org.knime.core.node.workflow.NativeNodeContainer.performReset(NativeNodeContainer.java:580)
	at org.knime.core.node.workflow.SingleNodeContainer.rawReset(SingleNodeContainer.java:428)
	at org.knime.core.node.workflow.WorkflowManager.invokeResetOnSingleNodeContainer(WorkflowManager.java:4573)
	at org.knime.core.node.workflow.WorkflowManager.restartLoop(WorkflowManager.java:3267)
	at org.knime.core.node.workflow.WorkflowManager.doAfterExecution(WorkflowManager.java:3144)
	at org.knime.core.node.workflow.NodeContainer.notifyParentExecuteFinished(NodeContainer.java:630)
	at org.knime.core.node.workflow.NodeExecutionJob.internalRun(NodeExecutionJob.java:248)
	at org.knime.core.node.workflow.NodeExecutionJob.run(NodeExecutionJob.java:124)
	at org.knime.core.util.ThreadUtils$RunnableWithContextImpl.runWithContext(ThreadUtils.java:334)
	at org.knime.core.util.ThreadUtils$RunnableWithContext.run(ThreadUtils.java:210)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at org.knime.core.util.ThreadPool$MyFuture.run(ThreadPool.java:123)
	at org.knime.core.util.ThreadPool$Worker.run(ThreadPool.java:246)

On first sight, this seems totally unrelated described to the issue above. But the following points seem striking:

  1. The stack trace contains the keyword “snappy” which also appeared in the opening issue – I have not followed the recent KNIME developments that closely, but this seems to be a recent new KNIME feature.

  2. Both workflows used loops with a relatively big amount of rows

  3. This one errored at iteration 31,435 of total 188,473 (which is at least close to 30,006 in the opening post)

  4. Both WFs use Java snippet nodes in their loop bodies.

Probably totally unrelated, probably not?

– Philipp

3 Likes