Hi Peter,

This exception is thrown when your client has closed the socket. This might
be the case due to the browser timing out the connection due to lack of
activity.

How much time does it take you to process the request and generate your
response? If this time is too long, or increases upon load, it might explain
the behavior.

Best regards,
Jerome Louvel
--
Restlet ~ Founder and Lead developer ~ http://www.restlet.org
Noelios Technologies ~ Co-founder ~ http://www.noelios.com


-----Message d'origine-----
De : news [mailto:[email protected]] De la part de Peter Becker
Envoyé : mardi 10 mars 2009 02:23
À : [email protected]
Objet : Broken pipes

Hello,

I am getting some exceptions when testing my application -- particularly
under load.

The pattern looks like this (copied from stderr):

===========================================
http://[....]:8182/ontologyVersions/148
Mar 10, 2009 11:03:04 AM com.noelios.restlet.http.HttpServerConverter commit
INFO: The connection was broken. It was probably closed by the client.
java.io.IOException: Broken pipe
        at sun.nio.ch.FileDispatcher.write0(Native Method)
        at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:29)
        at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:104)
        at sun.nio.ch.IOUtil.write(IOUtil.java:75)
        at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:334)
        at java.nio.channels.Channels.write(Channels.java:60)
        at java.nio.channels.Channels.access$000(Channels.java:47)
        at java.nio.channels.Channels$1.write(Channels.java:134)
        at
java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
        at java.io.BufferedOutputStream.write(BufferedOutputStream.java:109)
        at
com.noelios.restlet.http.ChunkedOutputStream.writeBuffer(ChunkedOutputStream
.java:135)
        at
com.noelios.restlet.http.ChunkedOutputStream.writeChunk(ChunkedOutputStream.
java:147)
        at
com.noelios.restlet.http.ChunkedOutputStream.write(ChunkedOutputStream.java:
123)
        at java.io.OutputStream.write(OutputStream.java:99)
        at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
        at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:263)
        at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:106)
        at java.io.OutputStreamWriter.write(OutputStreamWriter.java:190)
        at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:111)
        at java.io.BufferedWriter.flush(BufferedWriter.java:235)
        at freemarker.core.Environment.process(Environment.java:191)
        at freemarker.template.Template.process(Template.java:237)
        at
org.restlet.ext.freemarker.TemplateRepresentation.write(TemplateRepresentati
on.java:347)
        at
com.noelios.restlet.http.HttpServerCall.writeResponseBody(HttpServerCall.jav
a:492)
        at
com.noelios.restlet.http.HttpServerCall.sendResponse(HttpServerCall.java:428
)
        at
com.noelios.restlet.http.HttpServerConverter.commit(HttpServerConverter.java
:391)
        at
com.noelios.restlet.http.HttpServerHelper.handle(HttpServerHelper.java:148)
        at
com.noelios.restlet.http.StreamServerHelper$ConnectionHandler.run(StreamServ
erHelper.java:86)
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.ja
va:885)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:9
07)
        at java.lang.Thread.run(Thread.java:619)
Mar 10, 2009 11:03:04 AM com.noelios.restlet.http.StreamServerCall complete
WARNING: Unable to shutdown server socket
java.net.SocketException: Transport endpoint is not connected
        at sun.nio.ch.SocketChannelImpl.shutdown(Native Method)
        at
sun.nio.ch.SocketChannelImpl.shutdownInput(SocketChannelImpl.java:640)
        at sun.nio.ch.SocketAdaptor.shutdownInput(SocketAdaptor.java:360)
        at
com.noelios.restlet.http.StreamServerCall.complete(StreamServerCall.java:102
)
        at
com.noelios.restlet.http.HttpServerConverter.commit(HttpServerConverter.java
:416)
        at
com.noelios.restlet.http.HttpServerHelper.handle(HttpServerHelper.java:148)
        at
com.noelios.restlet.http.StreamServerHelper$ConnectionHandler.run(StreamServ
erHelper.java:86)
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.ja
va:885)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:9
07)
        at java.lang.Thread.run(Thread.java:619)
===========================================

There is none of the usual AfterHandle log entries for that URL, just the
URL itself in front of the stack trace (I removed the server name).

I'm using the Restlet engine (errors seem to appear both with 1.1.2 and
1.1.3). I tried on a Java 1.6.0_10 on Kubuntu 8.10 and a Java 1.6.0_02 on
Centos 4.7 (yes, that Java is in urgent need of updating) with the same
results. Restlet is 1.1.2/3, too, as is the Freemarker extension. Freemarker
comes in as indirect dependency, for restlet-freemarker 1.1.3 it seems to be
a 2.3.15.

The affected request is the URL above, the client gets a partial result
(note: in this case the full result of this particular request is ~54MB of
HTML). I've seen these exceptions with GETs and POSTs and with different
clients (at least Firefox3, Commons HttpClient). It seems to correlate with
content size (as expected) but not necessarily with general load (the
HttpClient code can submit entries in parallel -- tweaking the throttle
there doesn't seem to affect results significantly).

Does anyone have some ideas what the problem could be? Hints for debugging?

TIA,
   Peter

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=13001
85

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1333312

Reply via email to