Changeset: 2ba244ba3165 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2ba244ba3165
Modified Files:
        tools/merovingian/ChangeLog
        tools/merovingian/daemon/forkmserver.c
        tools/merovingian/daemon/merovingian.c
        tools/merovingian/utils/properties.c
Branch: default
Log Message:

merovingian: allow setting max_client property

The nclients monetdbd property now controls the max_clients property of
mserver5, such that per database limits on maximum concurrent number of
client connections can be set.


diffs (85 lines):

diff --git a/tools/merovingian/ChangeLog b/tools/merovingian/ChangeLog
--- a/tools/merovingian/ChangeLog
+++ b/tools/merovingian/ChangeLog
@@ -1,6 +1,10 @@
 # ChangeLog file for sql/src/backends/monet5/merovingian
 # This file is updated with mchangelog
 
+* Fri Sep 23 2011 Fabian Groffen <[email protected]>
+- Add nclients property that controls the maximum number of concurrent
+  clients allowed to access the database
+
 * Wed Aug 31 2011 Fabian Groffen <[email protected]>
 - Starting monetdbd without any arguments or without dbfarm is no longer
   supported.  A dbfarm now must be provided for each command.
diff --git a/tools/merovingian/daemon/forkmserver.c 
b/tools/merovingian/daemon/forkmserver.c
--- a/tools/merovingian/daemon/forkmserver.c
+++ b/tools/merovingian/daemon/forkmserver.c
@@ -172,6 +172,7 @@ forkMserver(char *database, sabdb** stat
                char usock[512];
                char mydoproxy;
                char nthreads[24];
+               char nclients[24];
                char master[512]; /* possibly undersized */
                char slave[512]; /* possibly undersized */
                char pipeline[512];
@@ -189,17 +190,22 @@ forkMserver(char *database, sabdb** stat
                mydoproxy = strcmp(getConfVal(_mero_props, "forward"), "proxy") 
== 0;
 
                kv = findConfKey(ckv, "nthreads");
-               if (kv->val == NULL)
-                       kv = findConfKey(_mero_db_props, "nthreads");
                if (kv->val != NULL) {
                        snprintf(nthreads, sizeof(nthreads), 
"gdk_nr_threads=%s", kv->val);
                } else {
                        nthreads[0] = '\0';
                }
 
+               kv = findConfKey(ckv, "nclients");
+               if (kv->val == NULL)
+                       kv = findConfKey(_mero_db_props, "nclients");
+               if (kv->val != NULL) {
+                       snprintf(nclients, sizeof(nclients), "max_clients=%s", 
kv->val);
+               } else {
+                       nclients[0] = '\0';
+               }
+
                kv = findConfKey(ckv, "optpipe");
-               if (kv->val == NULL)
-                       kv = findConfKey(_mero_db_props, "optpipe");
                if (kv->val != NULL) {
                        snprintf(pipeline, sizeof(pipeline), 
"sql_optimizer=%s", kv->val);
                } else {
@@ -287,6 +293,9 @@ forkMserver(char *database, sabdb** stat
                if (nthreads[0] != '\0') {
                        argv[c++] = "--set"; argv[c++] = nthreads;
                }
+               if (nclients[0] != '\0') {
+                       argv[c++] = "--set"; argv[c++] = nclients;
+               }
                if (pipeline[0] != '\0') {
                        argv[c++] = "--set"; argv[c++] = pipeline;
                }
diff --git a/tools/merovingian/daemon/merovingian.c 
b/tools/merovingian/daemon/merovingian.c
--- a/tools/merovingian/daemon/merovingian.c
+++ b/tools/merovingian/daemon/merovingian.c
@@ -612,6 +612,8 @@ main(int argc, char *argv[])
        kv->val = NULL; /* MURI */
        kv = findConfKey(_mero_db_props, "readonly");
        kv->val = strdup("no");
+       kv = findConfKey(_mero_db_props, "nclients");
+       kv->val = strdup("64");
 
        *dbfarm = '\0';
        if (argc > 1) {
diff --git a/tools/merovingian/utils/properties.c 
b/tools/merovingian/utils/properties.c
--- a/tools/merovingian/utils/properties.c
+++ b/tools/merovingian/utils/properties.c
@@ -41,6 +41,7 @@ static confkeyval _internal_prop_keys[] 
        {"master",   NULL, 0, STR},
        {"slave",    NULL, 0, MURI},
        {"readonly", NULL, 0, BOOLEAN},
+       {"nclients", NULL, 0, INT},
        { NULL,      NULL, 0, INVALID}
 };
 
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to