java.lang.ArrayIndexOutOfBoundsException at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:68)

49 views
Skip to first unread message

i29979...@gmail.com

unread,
Oct 14, 2015, 6:12:04 AM10/14/15
to XADisk
Hi.

I'm using XADisk in my EJB for writing large files (> 20MB) to disk uploaded from my web application.
java.lang.ArrayIndexOutOfBoundsException is thrown with line "at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91" repeated 1000x or more when using write(byte[]) method on XAFileOutputStream class.

This is my EJB method simulating that write operation using 50MB byte array:

public void testXADisk() {
byte[] b = new byte[50000000];

File file = new File("d:/temp/XADiskTest.txt");
try {
XADiskConnection c = this.xaDiskCf.getConnection();
c.createFile(file, false);
XAFileOutputStream xafos = c.createXAFileOutputStream(file, true);
xafos.write(b);
xafos.close();
} catch (Exception e) {
throw new RuntimeException(e);
} // end try-catch
}

... and the trace:
javax.ejb.EJBException: See nested exception; nested exception is: java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException
Caused by: java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException
at si.pbs.cpb.furs.es.FursEsSb.testXADisk(FursEsSb.java:2076)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
Caused by: java.lang.ArrayIndexOutOfBoundsException
at sun.nio.ch.NativeThreadSet.remove(NativeThreadSet.java:67)
at sun.nio.ch.FileChannelImpl.position(FileChannelImpl.java:293)
at org.xadisk.filesystem.virtual.VirtualViewFile.appendContentBuffer(VirtualViewFile.java:356)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.submitBuffer(NativeXAFileOutputStream.java:151)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:87)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)
at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91)

(line at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:91) is repeated maybe 1000x)

at org.xadisk.filesystem.virtual.NativeXAFileOutputStream.write(NativeXAFileOutputStream.java:68)
at si.pbs.cpb.furs.es.FursEsSb.testXADisk(FursEsSb.java:2072)
... 43 more

I'm using IBM Websphere Application Server 8.0.0.9 with installed XAFileSystem Resource Adapter 1.2.2.
Any ideas?

Thanks,
Igor

Nitin Verma

unread,
Oct 18, 2015, 4:42:38 AM10/18/15
to XADisk, i29979...@gmail.com
Hi Igor,

Please apply the following change to the file "NativeXAFileOutputStream.java", and see if it works for you:
https://java.net/projects/xadisk/sources/svn/revision/561 (click "diff")

This change is after 1.2.2, and is not in a release version yet.
Let me know if you have any questions.

Thanks,
Nitin

Reply all
Reply to author
Forward
0 new messages