Changeset: 0cd248aa887a for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0cd248aa887a Modified Files: tools/merovingian/ChangeLog tools/merovingian/daemon/argvcmds.c tools/merovingian/daemon/controlrunner.c Branch: default Log Message:
monetdbd get: retrieve mserver in use from merovingian Show the mserver5 binary that the monetdbd has in use, instead of showing the one the current monetdbd would start if it would serve the dbfarm currently looking at. This makes it more useful, but changes the behaviour from previous releases. diffs (67 lines): diff --git a/tools/merovingian/ChangeLog b/tools/merovingian/ChangeLog --- a/tools/merovingian/ChangeLog +++ b/tools/merovingian/ChangeLog @@ -1,6 +1,11 @@ # ChangeLog file for sql/src/backends/monet5/merovingian # This file is updated with mchangelog +* Fri Oct 7 2011 Fabian Groffen <[email protected]> +- Unlike in previous releases, 'monetdbd get mserver' now returns the path + to the mserver5 binary only for dbfarms that have a running monetdbd, + instead of only for those that are not served by a monetdbd. + * Fri Sep 23 2011 Fabian Groffen <[email protected]> - Add nclients property that controls the maximum number of concurrent clients allowed to access the database diff --git a/tools/merovingian/daemon/argvcmds.c b/tools/merovingian/daemon/argvcmds.c --- a/tools/merovingian/daemon/argvcmds.c +++ b/tools/merovingian/daemon/argvcmds.c @@ -220,10 +220,29 @@ command_get(confkeyval *ckv, int argc, c value = dbfarm; } else if (strcmp(p, "mserver") == 0) { if (meropid == 0) { - value = _mero_mserver; + value = "unknown (monetdbd not running)"; } else { - value = "binary in use cannot be determined " - "for a running monetdbd"; + char *res; + /* get binpath from running merovingian */ + kv = findConfKey(ckv, "sockdir"); + value = kv->val; + kv = findConfKey(ckv, "port"); + snprintf(buf, sizeof(buf), "%s/" CONTROL_SOCK "%d", + value, kv->ival); + value = control_send(&res, buf, -1, "", "mserver", 0, NULL); + if (value != NULL) { + free(value); + value = "unknown (failed to connect to monetdbd)"; + } else { + if (strncmp(res, "OK\n", 3) != 0) { + free(res); + value = "unknown (unsupported monetdbd)"; + } else { + snprintf(buf, sizeof(buf), "%s", res + 3); + value = buf; + free(res); + } + } } } else if (strcmp(p, "hostname") == 0) { value = _mero_hostname; diff --git a/tools/merovingian/daemon/controlrunner.c b/tools/merovingian/daemon/controlrunner.c --- a/tools/merovingian/daemon/controlrunner.c +++ b/tools/merovingian/daemon/controlrunner.c @@ -511,6 +511,12 @@ static void ctl_handle_client(int msgsoc MERO_VERSION, MONETDB_RELEASE); send(msgsock, buf2, len, 0); break; + } else if (strcmp(p, "mserver") == 0) { + len = snprintf(buf2, sizeof(buf2), "OK\n"); + send(msgsock, buf2, len, 0); + len = snprintf(buf2, sizeof(buf2), "%s\n", _mero_mserver); + send(msgsock, buf2, len, 0); + break; } else if (strcmp(p, "get") == 0) { confkeyval *props = getDefaultProps(); char *pbuf; _______________________________________________ Checkin-list mailing list [email protected] http://mail.monetdb.org/mailman/listinfo/checkin-list
