Просмотр исходного кода

ZOOKEEPER-1146. significant regression in client (c/python) performance. (phunt via mahadev)

git-svn-id: https://svn.apache.org/repos/asf/zookeeper/trunk@1157574 13f79535-47bb-0310-9956-ffa450edef68
Mahadev Konar 14 лет назад
Родитель
Сommit
f73be2a0d2
2 измененных файлов с 13 добавлено и 2 удалено
  1. 3 0
      CHANGES.txt
  2. 10 2
      src/c/src/zookeeper.c

+ 3 - 0
CHANGES.txt

@@ -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 

+ 10 - 2
src/c/src/zookeeper.c

@@ -1544,14 +1544,22 @@ int zookeeper_interest(zhandle_t *zh, int *fd, int *interest,
             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