[Groonga-commit] groonga/groonga [master] Limited queue size of httpd-learner connections.

Back to archive index

null+****@clear***** null+****@clear*****
2010年 12月 13日 (月) 23:02:47 JST


Tasuku SUENAGA a.k.a. gunyarakun	2010-12-13 14:02:47 +0000 (Mon, 13 Dec 2010)

  New Revision: 65e3934a7f25e17b75b1c3cd82b75ef268563fbd

  Log:
    Limited queue size of httpd-learner connections.

  Modified files:
    src/suggest/groonga_suggest_httpd.c
    src/suggest/groonga_suggest_learner.c

  Modified: src/suggest/groonga_suggest_httpd.c (+3 -0)
===================================================================
--- src/suggest/groonga_suggest_httpd.c    2010-12-13 13:54:54 +0000 (5b042e4)
+++ src/suggest/groonga_suggest_httpd.c    2010-12-13 14:02:47 +0000 (ab3a62f)
@@ -564,6 +564,9 @@ serve_threads(int nthreads, int port, const char *db_path, void *zmq_ctx,
               print_error("cannot connect zmq_socket.");
               zmq_close(thds[i].zmq_sock);
               thds[i].zmq_sock = NULL;
+            } else {
+              uint64_t hwm = 1;
+              zmq_setsockopt(thds[i].zmq_sock, ZMQ_HWM, &hwm, sizeof(uint64_t));
             }
           } else {
             thds[i].zmq_sock = NULL;

  Modified: src/suggest/groonga_suggest_learner.c (+5 -4)
===================================================================
--- src/suggest/groonga_suggest_learner.c    2010-12-13 13:54:54 +0000 (e8a9941)
+++ src/suggest/groonga_suggest_learner.c    2010-12-13 14:02:47 +0000 (8245d01)
@@ -319,6 +319,8 @@ send_to_httpd(void *arg)
       if (!(grn_ctx_init(&ctx, 0))) {
         if ((grn_db_open(&ctx, thd->db_path))) {
           while (loop) {
+            uint64_t hwm = 1;
+            zmq_setsockopt(zmq_send_sock, ZMQ_HWM, &hwm, sizeof(uint64_t));
             send_handler(zmq_send_sock, &ctx);
           }
         } else {
@@ -417,10 +419,10 @@ static void
 event_loop(msgpack_zone *mempool, void *zmq_sock, grn_ctx *ctx)
 {
   grn_obj buf;
-  GRN_TEXT_INIT(&buf, 0);
   zmq_pollitem_t items[] = {
     { zmq_sock, 0, ZMQ_POLLIN, 0}
   };
+  GRN_TEXT_INIT(&buf, 0);
   while (loop) {
     zmq_poll(items, 1, 10000);
     if (items[0].revents & ZMQ_POLLIN) { /* always true */
@@ -473,8 +475,6 @@ main(int argc, char **argv)
   /* parse options */
   {
     int ch;
-    extern char *optarg;
-    extern int optind, opterr;
 
     while ((ch = getopt(argc, argv, "r:s:")) != -1) {
       switch(ch) {
@@ -494,9 +494,10 @@ main(int argc, char **argv)
     usage(stderr);
   } else {
     grn_ctx *ctx;
-    grn_init();
     msgpack_zone *mempool;
 
+    grn_init();
+
     signal(SIGTERM, signal_handler);
     signal(SIGINT, signal_handler);
     signal(SIGQUIT, signal_handler);




Groonga-commit メーリングリストの案内
Back to archive index