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
