Skip to content

ExcelPasswordManager fails for large file sizes #143

@chaubold

Description

@chaubold

We @knime have observed that the ExcelPasswordManager cannot deal with larger files well and needs lots of memory to add/remove password protection.

Locally, with a 10MB Excel file and KNIME's hava heap memory (-Xmx) set to 2GB we see a JavaHeapSpace error. Increasing the heap memory size helps to mitigate that issue.

When using the node a KNIME Hub executor with 16GB RAM (-> ~10GB -Xmx) we notice that already files of 3MB size cannot be processed, while very small files work. In this instance the file is served differently and the error looks different (see below), but we believe they are connected.

Is there any way the memory usage of the node can be improved?

2025-02-05 13:52:45,362 : ERROR : KNIME-Worker-61144-Excel Password Manager : [...] : Node : Execute failed: Reason: Error while writing Error while saving output file Unexpected end of file from server
org.knime.core.node.InvalidSettingsException: Reason: Error while writing Error while saving output file Unexpected end of file from server
at org.AF.ExcelUtilities.ExcelPasswordManager.ExcelPasswordManagerNodeModel.execute(ExcelPasswordManagerNodeModel.java:306)
at org.knime.core.node.NodeModel.executeModel(NodeModel.java:596)
at org.knime.core.node.Node.invokeFullyNodeModelExecute(Node.java:1284)
at org.knime.core.node.Node.execute(Node.java:1049)
at org.knime.core.node.workflow.NativeNodeContainer.performExecuteNode(NativeNodeContainer.java:603)
at org.knime.core.node.exec.LocalNodeExecutionJob.mainExecute(LocalNodeExecutionJob.java:98)
at org.knime.core.node.workflow.NodeExecutionJob.internalRun(NodeExecutionJob.java:198)
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)
Caused by: org.knime.core.node.InvalidSettingsException: Error while writing Error while saving output file Unexpected end of file from server
at org.AF.ExcelUtilities.ExcelPasswordManager.ExcelPasswordManagerNodeModel.execute(ExcelPasswordManagerNodeModel.java:295)
... 13 more
Caused by: org.knime.core.node.InvalidSettingsException: Error while saving output file Unexpected end of file from server
at org.AF.ExcelUtilities.ExcelPasswordManager.ExcelPasswordManagerNodeModel.execute(ExcelPasswordManagerNodeModel.java:287)
... 13 more
Caused by: java.net.SocketException: Unexpected end of file from server
at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at java.base/sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.base/java.net.HttpURLConnection.getResponseCode(Unknown Source)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
at com.knime.enterprise.client.rest.RestUploadStream.close(RestUploadStream.java:267)
at org.knime.filehandling.core.connections.FSOutputStream.close(FSOutputStream.java:104)
at org.knime.filehandling.core.connections.base.BaseFileSystemProvider$2.close(BaseFileSystemProvider.java:504)
at org.AF.ExcelUtilities.ExcelPasswordManager.ExcelPasswordManagerNodeModel.encryptXLSX(ExcelPasswordManagerNodeModel.java:391)
at org.AF.ExcelUtilities.ExcelPasswordManager.ExcelPasswordManagerNodeModel.writeXlsWithPassword(ExcelPasswordManagerNodeModel.java:345)
at org.AF.ExcelUtilities.ExcelPasswordManager.ExcelPasswordManagerNodeModel.execute(ExcelPasswordManagerNodeModel.java:283)
... 13 more
Suppressed: java.net.SocketException: Unexpected end of file from server
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(Unknown Source)
at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.base/java.net.HttpURLConnection.getResponseCode(Unknown Source)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
at com.knime.enterprise.client.rest.RestUploadStream.close(RestUploadStream.java:267)
at org.knime.filehandling.core.connections.FSOutputStream.close(FSOutputStream.java:104)
at org.knime.filehandling.core.connections.base.BaseFileSystemProvider$2.close(BaseFileSystemProvider.java:504)
at org.AF.ExcelUtilities.ExcelPasswordManager.ExcelPasswordManagerNodeModel.execute(ExcelPasswordManagerNodeModel.java:286)
... 13 more
Caused by: [CIRCULAR REFERENCE: java.net.SocketException: Unexpected end of file from server]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions