From users-return-162516-apmail-tomcat-users-archive=tomcat.apache.org@tomcat.apache.org Tue May 08 09:01:25 2007 Return-Path: Delivered-To: apmail-tomcat-users-archive@www.apache.org Received: (qmail 14522 invoked from network); 8 May 2007 09:01:25 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 8 May 2007 09:01:25 -0000 Received: (qmail 93057 invoked by uid 500); 8 May 2007 09:01:19 -0000 Delivered-To: apmail-tomcat-users-archive@tomcat.apache.org Received: (qmail 93039 invoked by uid 500); 8 May 2007 09:01:19 -0000 Mailing-List: contact users-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Users List" Delivered-To: mailing list users@tomcat.apache.org Received: (qmail 93028 invoked by uid 99); 8 May 2007 09:01:19 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 08 May 2007 02:01:19 -0700 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received-SPF: pass (herse.apache.org: local policy) Received: from [72.22.94.67] (HELO virtual.halosg.com) (72.22.94.67) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 08 May 2007 02:01:12 -0700 Received: (qmail 11312 invoked from network); 8 May 2007 03:58:52 -0500 Received: from unknown (HELO ?10.220.0.222?) (198.212.148.254) by halosg.com with SMTP; 8 May 2007 03:58:52 -0500 Message-ID: <46403C1D.2000000@hanik.com> Date: Tue, 08 May 2007 11:00:13 +0200 From: Filip Hanik - Dev Lists User-Agent: Thunderbird 1.5.0.10 (Windows/20070221) MIME-Version: 1.0 To: Tomcat Users List Subject: Re: NioEndpoint closes connection upon timeout References: <23AFECEB22D2FD47ADF828485803B2C001A80A3F@MCHP7R5A.ww002.siemens.net> In-Reply-To: <23AFECEB22D2FD47ADF828485803B2C001A80A3F@MCHP7R5A.ww002.siemens.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org Reich, Matthias wrote: > The NioEndpoint seems to close a connection during the timeout handling. > My client reacts to a connection failure with a resubmit of the last > request, > and I see this in the log: > > 07.05.2007 22:08:14 comettest.CometServlet event > WARNUNG: BEGIN(16) POST /comettest/comet/request?action=poll&count=1 > 07.05.2007 22:08:35 comettest.CometServlet event > WARNUNG: ERROR/TIMEOUT(16) POST > /comettest/comet/request?action=poll&count=1 > 07.05.2007 22:08:35 comettest.CometServlet event > WARNUNG: BEGIN(17) POST /comettest/comet/request?action=poll&count=1 > > I had a look into the code and found that NioEndpoint.timeout calls > cancelledKey(key, SocketStatus.TIMEOUT,true); > Method cancelledKey processes the timeout event and then closes the > channel. > > However, the Javadoc of enum EventSubType says: > > TIMEOUT - the connection timed out (sub type of ERROR); note that this > ERROR type is not fatal, and the connection will not be closed unless > the servlet uses the close method of the event. > hmm, not sure I agree with the docs. let me check on that. in the meantime, why don't you set a much higher timeout value for the NIO connector you can do this on a per-connection basis. just do event.setTimeout during the BEGIN event. Filip > My servlet does not close the event in case of a TIMEOUT, and thus the > CoyoteAdapter won't recycle the processor. The consequence is that > Tomcat runs out of memory after a while if my asynchronous response > provider thread often waits longer than the connection timeout before > sending an answer. > you're servlet SHOULD ALWAYS call event.close upon any type of error. > According to a note which was still present in the Tomcat 5.5 server.xml > file, I tried to set the connectionTimeout value to 0 to disable > connection timeouts, but that does no longer seem to work with Tomcat 6, > at least not with the Nio connector. > see the note about per-connection timeout, also, you can set socket.soTimeout see the documentation > Thus, I think this behavior of the NioEndpoint must be considered a bug. > (Also, the Apr connector does not close the connection upon a TIMEOUT > event.) > > If it should not be possible to provide a short term solution which > keeps the connection open, perhaps the behavior of NioEndpoint.timeout > can be modified to signal a DISCONNECT instead of a TIMEOUT, even if it > was the server and not the client that disconnected. This would allow > the Servlet and the CoyoteAdapter to clean up more properly. > > > Matthias > > --------------------------------------------------------------------- > To start a new topic, e-mail: users@tomcat.apache.org > To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org > For additional commands, e-mail: users-help@tomcat.apache.org > > > > --------------------------------------------------------------------- To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org For additional commands, e-mail: users-help@tomcat.apache.org