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

Reply via email to