Changeset: aa96638806b2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=aa96638806b2
Modified Files:
        configure.ag
Branch: headless
Log Message:

Merge with default branch.


diffs (102 lines):

diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -2167,9 +2167,9 @@
        LIBS="$LIBS $pcre_LIBS"
        save_CFLAGS="$CFLAGS"
        CFLAGS="$CFLAGS $pcre_CFLAGS"
-       AC_RUN_IFELSE(AC_LANG_PROGRAM(
-               [#include <pcre.h>],
-               [int rc; pcre_config(PCRE_CONFIG_UTF8, &rc); exit(!rc);]),
+       AC_RUN_IFELSE([AC_LANG_PROGRAM(
+               [[#include <pcre.h>]],
+               [[int rc; pcre_config(PCRE_CONFIG_UTF8, &rc); exit(!rc);]])],
                AC_MSG_RESULT([yes]),
                have_pcre=no; AC_MSG_RESULT([no]),
                AC_MSG_RESULT([assuming yes]))
diff --git a/tools/merovingian/ChangeLog b/tools/merovingian/ChangeLog
--- a/tools/merovingian/ChangeLog
+++ b/tools/merovingian/ChangeLog
@@ -1,3 +1,6 @@
 # ChangeLog file for sql/src/backends/monet5/merovingian
 # This file is updated with mchangelog
 
+* Fri Apr 29 2011 Fabian Groffen <[email protected]>
+- added status property to get command
+
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
@@ -26,6 +26,7 @@
 #include <sys/stat.h>
 #include <signal.h> /* kill */
 
+#include <mutils.h> /* MT_lockf */
 #include <utils/utils.h>
 #include <utils/properties.h>
 
@@ -172,7 +173,7 @@
                kv = ckv;
                property = alloca(sizeof(char) * 512);
                /* hardwired read-only properties */
-               off += snprintf(property, 512, "hostname,dbfarm,mserver");
+               off += snprintf(property, 512, 
"hostname,dbfarm,status,mserver");
                while (kv->key != NULL) {
                        off += snprintf(property + off, 512 - off, ",%s", 
kv->key);
                        kv++;
@@ -184,6 +185,13 @@
                doall = 0;
        }
 
+       /* chdir to dbfarm so we can open relative files (like pidfile) */
+       if (chdir(dbfarm) < 0) {
+               fprintf(stderr, "could not move to dbfarm '%s': %s\n",
+                               dbfarm, strerror(errno));
+               return(1);
+       }
+
        printf("   property            value\n");
        while ((p = strtok(property, ",")) != NULL) {
                property = NULL;
@@ -207,6 +215,29 @@
                        snprintf(buf, sizeof(buf), "%s/" CONTROL_SOCK "%d",
                                        value, kv->ival);
                        value = buf;
+               } else if (strcmp(p, "status") == 0) {
+                       /* check if there is a merovingian serving this dbfarm 
*/
+                       int ret;
+                       if ((ret = MT_lockf(".merovingian_lock", F_TLOCK, 4, 
1)) == -1) {
+                               /* locking failed, merovingian is running */
+                               FILE *pf;
+                               char *pfile = getConfVal(ckv, "pidfile");
+
+                               if (pfile != NULL && (pf = fopen(pfile, "r")) 
!= NULL &&
+                                               fgets(buf, sizeof(buf), pf) != 
NULL)
+                               {
+                                       int meropid = atoi(buf);
+                                       snprintf(buf, sizeof(buf), 
"monetdbd[%d] is serving this dbfarm", meropid);
+                                       value = buf;
+                               } else {
+                                       value = "a monetdbd is serving this 
dbfarm, "
+                                               "but a pidfile was not found/is 
corrupt";
+                               }
+                       } else {
+                               if (ret >= 0)
+                                       close(ret); /* release a possible lock 
*/
+                               value = "no monetdbd is serving this dbfarm";
+                       }
                } else {
                        kv = findConfKey(ckv, p);
                        if (kv == NULL) {
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
@@ -59,7 +59,7 @@
 
 #include "monetdb_config.h"
 #include <msabaoth.h>
-#include <mutils.h>
+#include <mutils.h> /* MT_lockf */
 #include <utils/utils.h>
 #include <utils/properties.h>
 #include <utils/glob.h>
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to