Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java.io.IOException: Invalid argument

I have a web application running in cluster mode with a load balancer. It consists in two tomcats (T1, and T2) addressing only one DB. T2 is nfs mounted to T1. This is the only dofference between both nodes.

I have a java method generating some files. If the request runs on T1 there is no problem but if the request is running on node 2 I get an exception as follows:

java.io.IOException: Invalid argument
        at java.io.FileOutputStream.close0(Native Method)
        at java.io.FileOutputStream.close(FileOutputStream.java:279)

The corresponding code is as follows:

for (int i = 0; i < dataFileList.size(); i++) {
    outputFileName = outputFolder + fileNameList.get(i);
    FileOutputStream fileOut = new FileOutputStream(outputFileName);                        
    fileOut.write(dataFileList.get(i), 0, dataFileList.get(i).length);
    fileOut.flush();
    fileOut.close();
}

The exception appears at the fileOut.close()

Any hint?

Luis

like image 886
Luixv Avatar asked Apr 10 '26 14:04

Luixv


2 Answers

Setting this line in the .profile resolved the issue:

ulimit –n 2048
like image 169
ed123 Avatar answered Apr 13 '26 05:04

ed123


How large do dataFileList and fileNameList get? You could be running out of file descriptors. It's odd that it happens on close(), though.


Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!