0

I am migrating from jboss 6 to jboss 8.2. Earlier it was working without any exception but now when I try to download a file , I get below exception

Caused by: org.xnio.channels.FixedLengthUnderflowException: 8088 bytes remaining
    at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.terminateWrites(AbstractFixedLengthStreamSinkConduit.java:255) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
    at org.xnio.conduits.Conduits.writeFinalBasic(Conduits.java:134)
    at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.writeFinal(AbstractFixedLengthStreamSinkConduit.java:175) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
    at org.xnio.conduits.ConduitStreamSinkChannel.writeFinal(ConduitStreamSinkChannel.java:104)
    at io.undertow.channels.DetachableStreamSinkChannel.writeFinal(DetachableStreamSinkChannel.java:194) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
    at io.undertow.server.HttpServerExchange$WriteDispatchChannel.writeFinal(HttpServerExchange.java:1829) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
    at io.undertow.servlet.spec.ServletOutputStreamImpl.writeBufferBlocking(ServletOutputStreamImpl.java:565) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
    at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:600) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
    at io.undertow.servlet.spec.ServletOutputStreamImpl.updateWritten(ServletOutputStreamImpl.java:364) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
    at io.undertow.servlet.spec.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:223) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
    at java.io.BufferedOutputStream.flushBuffer(Unknown Source) [rt.jar:1.7.0_71]
    at java.io.BufferedOutputStream.write(Unknown Source) [rt.jar:1.7.0_71]

Code snippet

ContentType = "application/octet-stream";
BufInput = new BufferedInputStream(new FileInputStream(File), 5000);
Response.reset();
Response.setIntHeader("Expires", 0);
Response.setContentType(contentType);
Response.setHeader("Content-Disposition", header);
Response.setIntHeader("Content-length", (int) File.length());
Response.setContentLength((int)File.length());
OutStream = new BufferedOutputStream(Response.getOutputStream(), 5000);
int Byte;
while ((Byte = BufInput.read()) != -1)
    OutStream.write(Byte);
OutStream.flush();
OutStream.close();
BufInput.close();
happy
  • 2,550
  • 17
  • 64
  • 109

1 Answers1

0

This was fixed in 8.2.1 and 9.0.x

So solution for you is to upgrade.

Tomaz Cerar
  • 5,761
  • 25
  • 32
  • After restarting the server (8.2.1), first time when I click to download file I get "General Error.General input/output error.". And if I click once again to download then It works fine. – happy Aug 17 '15 at 12:16
  • When I remove Response.setIntHeader("Content-length", (int) File.length()); Response.setContentLength((int)File.length()); It works fine both on 8.2.0 and 8.2.1 – happy Aug 17 '15 at 12:16