Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.0.1
-
None
-
None
-
Windows 2003 Server 64-bit
Description
java.io.IOException: Insufficient system resources exist to complete the requested service
at sun.nio.ch.FileDispatcher.pwrite0(Native Method)
at sun.nio.ch.FileDispatcher.pwrite(Unknown Source)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(Unknown Source)
at sun.nio.ch.IOUtil.write(Unknown Source)
at sun.nio.ch.FileChannelImpl.write(Unknown Source)
at sun.nio.ch.FileChannelImpl.transferFromFileChannel(Unknown Source)
at sun.nio.ch.FileChannelImpl.transferFrom(Unknown Source)
at org.apache.commons.io.FileUtils.doCopyFile(FileUtils.java:813)
at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:783)
at org.test.igor.TestFileUtils.main(TestFileUtils.java:55)
NOTE: the issue is cased by the function doCopyFile(File srcFile, File destFile, boolean preserveFileDate) using hardcoded data chunks of FIFTY_MB in the transferFrom() call.
Reducing this chunk from 50M to 31M solves the issue for my situation (32M still fails).
Here is a test program to reproduce the issue:
package org.test.igor;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
public class TestFileUtils {
public static void main(String[] args){
File src = new File("D:\\2011.1-dev\\test
test");
File dest = new File("\\\\ismerek1
Shared");
String filename = "jdk-6u19-windows-x64.exe";
File file = new File(src, filename);
File toFile = new File(dest, filename);
try
{ FileUtils.copyFile(file, toFile, true); System.out.println("Successful copy"); }catch (IOException e1)
{ e1.printStackTrace(); } }
}