From dev-return-8032-apmail-activemq-dev-archive=activemq.apache.org@activemq.apache.org Wed Sep 05 21:55:56 2007 Return-Path: Delivered-To: apmail-activemq-dev-archive@www.apache.org Received: (qmail 23613 invoked from network); 5 Sep 2007 21:55:55 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 5 Sep 2007 21:55:55 -0000 Received: (qmail 76045 invoked by uid 500); 5 Sep 2007 21:55:49 -0000 Delivered-To: apmail-activemq-dev-archive@activemq.apache.org Received: (qmail 76022 invoked by uid 500); 5 Sep 2007 21:55:49 -0000 Mailing-List: contact dev-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list dev@activemq.apache.org Received: (qmail 76013 invoked by uid 99); 5 Sep 2007 21:55:49 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Sep 2007 14:55:49 -0700 X-ASF-Spam-Status: No, hits=-99.8 required=10.0 tests=ALL_TRUSTED,WHOIS_MYPRIVREG X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Sep 2007 21:57:02 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id A0573714201 for ; Wed, 5 Sep 2007 14:55:22 -0700 (PDT) Message-ID: <28905710.1189029322653.JavaMail.jira@brutus> Date: Wed, 5 Sep 2007 14:55:22 -0700 (PDT) From: "Hiram Chirino (JIRA)" To: dev@activemq.apache.org Subject: [jira] Commented: (AMQ-1156) option "wireFormat.tcpNoDelayEnabled=true" is ignored In-Reply-To: <25337530.1170836283907.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/activemq/browse/AMQ-1156?page=3Dcom.atlassi= an.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40078 ]=20 Hiram Chirino commented on AMQ-1156: ------------------------------------ Great comments guys. I just committed a fix to the activemq trunk. We now actually update the tcpNoDelay setting on the socket once the wirefo= rmat options are negociated. This allows the client to control if his socket and the server's socket use the option.= By default tcpNoDelay is enabled. the client should use a URL like tcp://localhost:61616?wireFormat.tcpNoDela= yEnabled=3Dfalse to disable tcpNoDelay on both the client and the server socket. If you guys get a chance could you confirm that this fixes the issue?? than= ks. Hiram > option "wireFormat.tcpNoDelayEnabled=3Dtrue" is ignored > ----------------------------------------------------- > > Key: AMQ-1156 > URL: https://issues.apache.org/activemq/browse/AMQ-1156 > Project: ActiveMQ > Issue Type: Bug > Components: Documentation, Test Cases, Transport > Affects Versions: 4.0, 4.1.0, 5.0.0 > Environment: Any. > Reporter: David Mart=EDn Clavo > Assignee: Hiram Chirino > Fix For: 5.0.0 > > > *A. Description* > Setting the wireFormat.tcpNoDelayEnabled flag to true in connection uri's= (for example _"tcp://localhost:61616?wireFormat.tcpNoDelayEnabled"_) has n= o effect: > The sockets created in ActiveMQ do not have the TcpNoDelay flag set to tr= ue. > You can verify this for example in the following way: insert the line _Sy= stem.err.println(sock.getTcpNoDelay());_ at the end of the method > _org.apache.activemq.transport.tcp.TcpTransport.initialiseSocket_. > Also you can try my test at http://www.nabble.com/High-latency-for-small-= messages-problem-t3159901.html which makes latency appear if Nagle's algori= thm is not disabled. > This affects versions 4.0, 4.1.0, and 4.2.0 latest snapshot. I guess 4.0.= 2 is affected too. > *B. Reason* > After looking at the source code to understand how the options are set, i= saw that in the method org.apache.activemq.transport.tcp.TcpTransportFacto= ry.compositeConfigure the following line appears: > _Map socketOptions =3D IntrospectionSupport.extractProperties(options, "s= ocket.")_;=20 > and also that the method to set the TcpNoDelay option in class _org.apach= e.activemq.transport.tcp.TcpTransport_ is called _setTcpNoDelay_ and not _s= etTcpNoDelayEnabled_ > Therefore, I tried to write _"socket.tcpNoDelay=3Dtrue"_ instead of _"wir= eFormat.tcpNoDelayEnabled=3Dtrue"_ and it *worked!* This is a *workaround*. > But, _"wireFormat.tcpNoDelayEnabled"_ option is not refused (as _"wireFor= mat.tcpNoDelayTypoEnabled"_ would be). The option _"tcpNoDelay=3Dtrue"_ is = not refused either, but DOES NOT work either. > *C. Fix* > So, please, for the sake of the poor soul who's next going to try to disa= ble Nagle's algorithm without noticing any effect, and will start looking f= or the problem elsewhere (and for the sake of consistency also): > -Either change the documentation (http://www.activemq.org/site/tcp-transp= ort-reference.html and http://www.activemq.org/site/configuring-wire-format= s.html) to say that one should use the _socket.tcpNoDelay_ option, or > -Change the code to obey the documentation (and make it refuse old option= s like just _"tcpNoDelay"_ who have no effect). > Personally I would change the documentation ASAP so that people know abou= t the _"socket.tcpNoDelay=3Dtrue"_ workaround until next version, and then = change the code to recognize the _"wireFormat.tcpNoDelayTypoEnabled"_ optio= n. I'd like to point out that the own ActiveMQ test cases use _"wireFormat.= tcpNoDelayTypoEnabled"_ . > *D. Related issues* > This is related to a previous post of mine: http://www.nabble.com/High-la= tency-for-small-messages-problem-t3159901.html > Doing quick synchronized sends showed a 39ms latency if the broker is run= ning in Linux, and a 200ms latency if the broker is in Windows (by the way,= if someone knows the bottom reason for this exact latency times, please te= ll me). Putting the _"wireFormat.tcpNoDelayTypoEnabled"_ to true in order t= o disable Nagle's algorithm had no effect (because ActiveMQ does not recogn= ize it). > Very probably this is also related to issues https://issues.apache.org/ac= tivemq/browse/AMQ-1143 and https://issues.apache.org/activemq/browse/AMQ-11= 37 (in this one probably Helmutt tried to set the wireFormat.tcpNoDelayTypo= Enabled without success because of this). --=20 This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.