I updatetd to XNIO 3.1.0.Beta7 and latest Undertow master.
I still have an exception
Dec 11, 2012 7:02:02 PM io.undertow.util.WorkerDispatcher$1 run
ERROR: UNDERTOW005001: An exception occurred processing the request
org.xnio.channels.FixedLengthUnderflowException: 65536 bytes remaining
at
org.xnio.channels.FixedLengthStreamSinkChannel.shutdownWrites(FixedLengthStreamSinkChannel.java:291)
at ceylon.net.httpd.internal.HttpResponseImpl.responseDone(HttpResponseImpl.ceylon:69)
at
ceylon.net.httpd.internal.CeylonRequestHandler$AsyncInvoker$1completionHandler_.handleComplete(CeylonRequestHandler.ceylon:65)
at ceylon.net.httpd.endpoints.StaticFileEndpoint.service(StaticFileEndpoint.ceylon:69)
at
ceylon.net.httpd.internal.CeylonRequestHandler$AsyncInvoker.run(CeylonRequestHandler.ceylon:69)
at io.undertow.util.WorkerDispatcher$1.run(WorkerDispatcher.java:53)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Matej.
On 23/10/12 00:49, Stuart Douglas wrote:
This should be fixed in the XNIO upstream:
https://github.com/xnio/xnio/commit/5a1ed9dff29455d78bc9beb50c6e448e1bbb6ef9
David, would we be able to get another XNIO release soonish?
Stuart
Matej Lazar wrote:
> Hi, I'm writing an http server for Ceylon on top of undertow.
>
> All bytes are written to response and successfully transferred, but exception bellow
occurs when shutdownWrites is called.
>
> Stepping through a "write" method of FixedLengthStreamSinkChannel, looks
like "state" is not updated correctly, it is always subtracted only for are
number of bytes written in one loop.
>
> Am I missing something or is it a bug ?
>
> byte array size is 6919638, usually there are 147456 bytes written to a response in a
loop
>
> My code for writing bytes to response ... not quite Java, but readable ;)
>
> shared actual void writeBytes(Array<Integer> bytes) {
> //ByteBuffer.wrap
> value bb = wrapByteBuffer(bytes);
> value response = getResponse();
>
> variable Integer remaining := bytes.size;
> while (remaining> 0) {
> variable Integer written := 0;
> while((written := response.write(bb))> 0) {
> remaining -= written;
> try {
> response.awaitWritable();
> } catch(JIOException e) {
> //TODO
> print(e);
> }
> }
> }
> }
>
>
> Exception in thread "XNIO-1 task-2" java.lang.Error:
org.xnio.channels.FixedLengthUnderflowException: 6815744 bytes remaining
> at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1116)
> at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:722)
> Caused by: org.xnio.channels.FixedLengthUnderflowException: 6815744 bytes remaining
> at
org.xnio.channels.FixedLengthStreamSinkChannel.shutdownWrites(FixedLengthStreamSinkChannel.java:291)
> at
ceylon.net.httpd.internal.HttpResponseImpl.responseDone(HttpResponseImpl.ceylon:71)
> at
ceylon.net.httpd.internal.CeylonRequestHandler$AsyncInvoker$1completionHandler_.handleComplete(CeylonRequestHandler.ceylon:56)
> at
ceylon.net.httpd.endpoints.StaticFileEndpoint.service(StaticFileEndpoint.ceylon:50)
> at
ceylon.net.httpd.internal.CeylonRequestHandler$AsyncInvoker.run(CeylonRequestHandler.ceylon:60)
> at io.undertow.util.WorkerDispatcher$1.run(WorkerDispatcher.java:49)
> at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> ... 2 more
>
>
> Thanks,
> Matej.
> _______________________________________________
> undertow-dev mailing list
> undertow-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/undertow-dev