Return-Path: Delivered-To: apmail-tomcat-dev-archive@www.apache.org Received: (qmail 10793 invoked from network); 19 Oct 2006 07:21:47 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 19 Oct 2006 07:21:47 -0000 Received: (qmail 16856 invoked by uid 500); 19 Oct 2006 07:21:29 -0000 Delivered-To: apmail-tomcat-dev-archive@tomcat.apache.org Received: (qmail 16806 invoked by uid 500); 19 Oct 2006 07:21:29 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 16794 invoked by uid 99); 19 Oct 2006 07:21:29 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 19 Oct 2006 00:21:29 -0700 X-ASF-Spam-Status: No, hits=2.0 required=10.0 tests=HTML_MESSAGE X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [217.160.178.142] (HELO p15122102.pureserver.info) (217.160.178.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 19 Oct 2006 00:21:27 -0700 Received: from [192.168.1.2] (dslb-084-060-103-221.pools.arcor-ip.net [84.60.103.221]) by p15122102.pureserver.info (Postfix) with ESMTP id 205B23AC225 for ; Thu, 19 Oct 2006 09:39:29 +0200 (CEST) Mime-Version: 1.0 (Apple Message framework v752.2) In-Reply-To: <4536B86A.6030108@hanik.com> References: <20061018163744.9DDD21A981F@eris.apache.org> <4536B86A.6030108@hanik.com> Content-Type: multipart/alternative; boundary=Apple-Mail-6-399151871 Message-Id: From: Peter Rossbach Subject: Re: svn commit: r465293 - in /tomcat/container/tc5.5.x: modules/cluster/src/share/org/apache/catalina/cluster/tcp/ webapps/docs/ Date: Thu, 19 Oct 2006 09:21:01 +0200 To: "Tomcat Developers List" X-Mailer: Apple Mail (2.752.2) X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N --Apple-Mail-6-399151871 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed HI Filip, you are right, and with recoverCounter=0 it is like today. Hups, i have checkin my test value, and change it back to 0, later this day. Many thanks to review the patch Peter Am 19.10.2006 um 01:27 schrieb Filip Hanik - Dev Lists: > Hi Peter, > > with this fix, if I read it correctly, and a node crashes while > sending data, the sending thread will be stuck sleeping for 25 > seconds (recoverTimeout*recoverCounter)? > if that is the case, I suggest that we use recoverCounter=0 as the > default value. > > did I miss something? > > Filip > > pero@apache.org wrote: >> Author: pero >> Date: Wed Oct 18 09:37:42 2006 >> New Revision: 465293 >> >> URL: http://svn.apache.org/viewvc?view=rev&rev=465293 >> Log: >> Made recovery more robust. >> >> Modified: >> tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/ >> catalina/cluster/tcp/FastAsyncSocketSender.java >> tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/ >> catalina/cluster/tcp/LocalStrings.properties >> tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/ >> catalina/cluster/tcp/mbeans-descriptors.xml >> tomcat/container/tc5.5.x/webapps/docs/changelog.xml >> >> Modified: tomcat/container/tc5.5.x/modules/cluster/src/share/org/ >> apache/catalina/cluster/tcp/FastAsyncSocketSender.java >> URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/ >> cluster/src/share/org/apache/catalina/cluster/tcp/ >> FastAsyncSocketSender.java?view=diff&rev=465293&r1=465292&r2=465293 >> ===================================================================== >> ========= >> --- tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/ >> catalina/cluster/tcp/FastAsyncSocketSender.java (original) >> +++ tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/ >> catalina/cluster/tcp/FastAsyncSocketSender.java Wed Oct 18 >> 09:37:42 2006 >> @@ -54,7 +54,7 @@ >> /** >> * The descriptive information about this implementation. >> */ >> - private static final String info = "FastAsyncSocketSender/3.0"; >> + private static final String info = "FastAsyncSocketSender/3.1"; >> // ----------------------------------------------------- >> Instance Variables >> @@ -69,6 +69,16 @@ >> private FastQueueThread queueThread = null; >> /** >> + * recover timeout ( default 5 secs) >> + */ >> + private long recoverTimeout = 5000; >> + + /** >> + * number of recover tries >> + */ >> + private int recoverCounter = 5; >> + >> + /** >> * Count number of queue message >> */ >> private long inQueueCounter = 0; >> @@ -229,6 +239,40 @@ >> } >> /** >> + * get current push message recover timeout + * @return >> current push message recover timeout >> + */ >> + public long getRecoverTimeout() { >> + + return recoverTimeout; >> + } >> + >> + /** >> + * Set recover timeout (default 5000 msec) >> + * @param timeout >> + */ >> + public void setRecoverTimeout(long timeout) { >> + recoverTimeout = timeout; >> + } >> + >> + /** >> + * get current push message recover counter + * @return >> current push message recover counter >> + */ >> + public int getRecoverCounter() { >> + + return recoverCounter; >> + } >> + >> + /** >> + * Set recover couner (default 5 ) >> + * @param counter >> + */ >> + public void setRecoverCounter(int counter) { >> + recoverCounter = counter; >> + } >> + >> + /** >> * change active the queue Thread priority * @param >> threadPriority value must be between MIN and MAX Thread Priority >> * @exception IllegalArgumentException >> @@ -465,25 +509,62 @@ >> } >> /** >> - * @param entry >> + * Push all messages from queue to other nodes. Is >> revovery configured >> + * make a resends with some waits. >> + * @param entry list of messages >> */ >> protected void pushQueuedMessages(LinkObject entry) { >> do { >> int messagesize = 0; >> + ClusterData data = null ; >> try { >> - ClusterData data = (ClusterData) entry.data(); >> + data = (ClusterData) entry.data(); >> messagesize = data.getMessage().length; >> sender.pushMessage(data); >> } catch (Exception x) { >> - log.warn(sm.getString( >> - "AsyncSocketSender.send.error", entry >> + long rTimeout = sender.getRecoverTimeout() ; >> + int rCounter = sender.getRecoverCounter() ; >> + if(data != null && + >> rTimeout > 0 && + rCounter > 0) { >> + // wait that network get stabler >> + int counter = 1; >> + boolean success = false ; >> + do { >> + try { >> + Thread.sleep(rTimeout*counter); >> + } catch (Exception sleep) { >> + } >> + try { >> + if(log.isDebugEnabled()) { >> + log.debug(sm.getString >> ("AsyncSocketSender.send.recover", >> + entry.getKey(), >> + new Integer(counter), >> + new Integer >> (rCounter), new Long(rTimeout))) ; >> + } >> + sender.pushMessage(data); >> + success = true; >> + } catch (Exception xx) { >> + counter++; >> + } >> + } while (keepRunning && !success && >> counter <= rCounter); >> + + if(!success) { >> + log.warn(sm.getString( >> + >> "AsyncSocketSender.send.error", entry >> .getKey()), x); >> - } finally { >> + } >> + } else { >> + log.warn(sm.getString( >> + "AsyncSocketSender.send.error", >> entry >> + .getKey()), x); >> + } >> + } finally { >> outQueueCounter++; >> decQueuedNrOfBytes(messagesize); >> } >> entry = entry.next(); >> - } while (entry != null); >> + } while (keepRunning && entry != null); >> } >> } >> >> Modified: tomcat/container/tc5.5.x/modules/cluster/src/share/org/ >> apache/catalina/cluster/tcp/LocalStrings.properties >> URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/ >> cluster/src/share/org/apache/catalina/cluster/tcp/ >> LocalStrings.properties?view=diff&rev=465293&r1=465292&r2=465293 >> ===================================================================== >> ========= >> --- tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/ >> catalina/cluster/tcp/LocalStrings.properties (original) >> +++ tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/ >> catalina/cluster/tcp/LocalStrings.properties Wed Oct 18 09:37:42 2006 >> @@ -2,6 +2,7 @@ >> AsyncSocketSender.queue.message=Queue message to [{0}: >> {1,number,integer}] id=[{2}] size={3} >> AsyncSocketSender.send.error=Unable to asynchronously send >> session with id=[{0}] - message will be ignored. >> AsyncSocketSender.queue.empty=Queue in sender [{0}: >> {1,number,integer}] returned null element! >> +AsyncSocketSender.send.recover=Recover queued message id=[{0}] >> after failure and send again ( current counter={1,number,integer}, >> max counter={2,number,integer}, timeout={3,number,long}) >> cluster.mbean.register.already=MBean {0} already registered! >> FastAsyncSocketSender.setThreadPriority=[{0}:{1,number,integer}] >> set priority to {2} >> FastAsyncSocketSender.min.exception=[{0}:{1,number,integer}] new >> priority {2} < MIN_PRIORITY >> >> Modified: tomcat/container/tc5.5.x/modules/cluster/src/share/org/ >> apache/catalina/cluster/tcp/mbeans-descriptors.xml >> URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/ >> cluster/src/share/org/apache/catalina/cluster/tcp/mbeans- >> descriptors.xml?view=diff&rev=465293&r1=465292&r2=465293 >> ===================================================================== >> ========= >> --- tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/ >> catalina/cluster/tcp/mbeans-descriptors.xml (original) >> +++ tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/ >> catalina/cluster/tcp/mbeans-descriptors.xml Wed Oct 18 09:37:42 2006 >> @@ -620,6 +620,12 @@ >> description="after send failure make a resend" >> is="true" >> type="boolean" /> >> + > + description="recover Timeout after push message failure >> (default 5000 msec)" >> + type="long" /> >> + > + description="number of recover tries (default 5)" >> + type="int" /> >> > is="true" >> description="socket connected" >> >> Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml >> URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/ >> docs/changelog.xml?view=diff&rev=465293&r1=465292&r2=465293 >> ===================================================================== >> ========= >> --- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original) >> +++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Wed Oct 18 >> 09:37:42 2006 >> @@ -84,6 +84,14 @@ >> >> >> + >> + >> + >> + Add better recovery at FastAsyncQueueSender. Made the >> startegy more robust for temporary connection problems (pero) >> + >> + >> + + >> >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org >> For additional commands, e-mail: dev-help@tomcat.apache.org >> >> >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org > For additional commands, e-mail: dev-help@tomcat.apache.org > > --Apple-Mail-6-399151871--