[Groonga-commit] groonga/groonga [master] add --cache-limit option.

アーカイブの一覧に戻る

null+****@clear***** null+****@clear*****
2010年 7月 9日 (金) 14:58:11 JST


Kouhei Sutou	2010-07-09 05:58:11 +0000 (Fri, 09 Jul 2010)

  New Revision: bc005f854c8141b11a1cb2481b6ddea57c4826ce

  Log:
    add --cache-limit option.

  Modified files:
    src/groonga.c

  Modified: src/groonga.c (+17 -1)
===================================================================
--- src/groonga.c    2010-07-08 02:34:04 +0000 (db2785c)
+++ src/groonga.c    2010-07-09 05:58:11 +0000 (12a33a0)
@@ -99,6 +99,7 @@ usage(FILE *output)
           "  --query-log-path <path>:          specify query log path\n"
           "  --pid-path <path>:                specify pid file path (daemon mode only)\n"
           "  --config-path <path>:             specify config file path\n"
+          "  --cache-limit <limit>:            specify the max number of cache data\n"
           "\n"
           "dest: <db pathname> [<command>] or <dest hostname>\n"
           "  <db pathname> [<command>]: when standalone/server mode\n"
@@ -1722,7 +1723,8 @@ main(int argc, char **argv)
   grn_encoding enc = GRN_ENC_DEFAULT;
   const char *portstr = NULL, *encstr = NULL,
     *max_nfthreadsstr = NULL, *loglevel = NULL,
-    *listen_addressstr = NULL, *hostnamestr = NULL, *protocol = NULL;
+    *listen_addressstr = NULL, *hostnamestr = NULL, *protocol = NULL,
+    *cache_limitstr = NULL;
   const char *config_path = NULL;
   int r, i, mode = mode_alone;
   static grn_str_getopt_opt opts[] = {
@@ -1746,6 +1748,7 @@ main(int argc, char **argv)
     {'\0', "pid-path", NULL, 0, getopt_op_none},
     {'\0', "config-path", NULL, 0, getopt_op_none},
     {'\0', "show-config", NULL, mode_config, getopt_op_update},
+    {'\0', "cache-limit", NULL, 0, getopt_op_none},
     {'\0', NULL, NULL, 0, 0}
   };
   opts[0].arg = &portstr;
@@ -1760,6 +1763,7 @@ main(int argc, char **argv)
   opts[16].arg = &grn_qlog_path;
   opts[17].arg = &pidfile_path;
   opts[18].arg = &config_path;
+  opts[20].arg = &cache_limitstr;
   if (!(default_max_nfthreads = get_core_number())) {
     default_max_nfthreads = DEFAULT_MAX_NFTHREADS;
   }
@@ -1908,6 +1912,18 @@ main(int argc, char **argv)
   } else {
     gethostname(hostname, HOST_NAME_MAX);
   }
+  if (cache_limitstr) {
+    uint32_t max, *max_nentries;
+    const char *end, *rest;
+    end = cache_limitstr + strlen(cache_limitstr);
+    max_nentries = grn_cache_max_nentries();
+    max = grn_atoui(cache_limitstr, end, &rest);
+    if (end == rest) {
+      *max_nentries = max;
+    } else {
+      fprintf(stderr, "invalid --cache-limit value: <%s>\n", cache_limitstr);
+    }
+  }
   newdb = (mode & MODE_NEW_DB);
   useql = (mode & MODE_USE_QL);
   switch (mode & MODE_MASK) {




Groonga-commit メーリングリストの案内
アーカイブの一覧に戻る