You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ma...@apache.org on 2011/08/14 19:30:46 UTC

svn commit: r1157574 - in /zookeeper/trunk: CHANGES.txt src/c/src/zookeeper.c

Author: mahadev
Date: Sun Aug 14 17:30:45 2011
New Revision: 1157574

URL: http://svn.apache.org/viewvc?rev=1157574&view=rev
Log:
ZOOKEEPER-1146. significant regression in client (c/python) performance. (phunt via mahadev)

Modified:
    zookeeper/trunk/CHANGES.txt
    zookeeper/trunk/src/c/src/zookeeper.c

Modified: zookeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/trunk/CHANGES.txt?rev=1157574&r1=1157573&r2=1157574&view=diff
==============================================================================
--- zookeeper/trunk/CHANGES.txt (original)
+++ zookeeper/trunk/CHANGES.txt Sun Aug 14 17:30:45 2011
@@ -278,6 +278,9 @@ BUGFIXES: 
 
   ZOOKEEPER-839. deleteRecursive does not belong to the other methods.
    (mahadev)
+ 
+  ZOOKEEPER-1146. significant regression in client (c/python) performance.
+  (phunt via mahadev)
 
 IMPROVEMENTS:
   ZOOKEEPER-724. Improve junit test integration - log harness information 

Modified: zookeeper/trunk/src/c/src/zookeeper.c
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/c/src/zookeeper.c?rev=1157574&r1=1157573&r2=1157574&view=diff
==============================================================================
--- zookeeper/trunk/src/c/src/zookeeper.c (original)
+++ zookeeper/trunk/src/c/src/zookeeper.c Sun Aug 14 17:30:45 2011
@@ -1544,14 +1544,22 @@ int zookeeper_interest(zhandle_t *zh, in
             zh->connect_index = 0;
         }else {
             int rc;
-            char on = 1;
+#ifdef WIN32
+            char enable_tcp_nodelay = 1;
+#else
+            int enable_tcp_nodelay = 1;
+#endif
+            int ssoresult;
 
             zh->fd = socket(zh->addrs[zh->connect_index].ss_family, SOCK_STREAM, 0);
             if (zh->fd < 0) {
                 return api_epilog(zh,handle_socket_error_msg(zh,__LINE__,
                                                              ZSYSTEMERROR, "socket() call failed"));
             }
-            setsockopt(zh->fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(char));
+            ssoresult = setsockopt(zh->fd, IPPROTO_TCP, TCP_NODELAY, &enable_tcp_nodelay, sizeof(enable_tcp_nodelay));
+            if (ssoresult != 0) {
+                LOG_WARN(("Unable to set TCP_NODELAY, operation latency may be effected"));
+            }
 #ifdef WIN32
             ioctlsocket(zh->fd, FIONBIO, &nonblocking_flag);                    
 #else