Changeset: e007ffa9cf13 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e007ffa9cf13 Modified Files: tools/merovingian/daemon/controlrunner.c tools/merovingian/daemon/forkmserver.c tools/merovingian/daemon/merovingian.c tools/merovingian/daemon/merovingian.h Branch: default Log Message:
Merged from Aug2011 diffs (91 lines): diff --git a/tools/merovingian/ChangeLog.Aug2011 b/tools/merovingian/ChangeLog.Aug2011 --- a/tools/merovingian/ChangeLog.Aug2011 +++ b/tools/merovingian/ChangeLog.Aug2011 @@ -1,6 +1,10 @@ # ChangeLog file for sql/src/backends/monet5/merovingian # This file is updated with mchangelog +* Sun Oct 9 2011 Fabian Groffen <fab...@cwi.nl> +- Resolved problem where monetdbd would terminate abnormally when + databases named 'control', 'discovery' or 'merovingian' were stopped. + * Fri Oct 7 2011 Fabian Groffen <fab...@cwi.nl> - monetdbd get status now also reports the version of the running monetdbd 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 @@ -279,7 +279,7 @@ static void ctl_handle_client(int msgsoc pthread_mutex_lock(&_mero_topdp_lock); dp = _mero_topdp->next; /* don't need the console/log */ while (dp != NULL) { - if (strcmp(dp->dbname, q) == 0) { + if (dp->type == MERODB && strcmp(dp->dbname, q) == 0) { if (strcmp(p, "stop") == 0) { terminateProcess(dp); Mfprintf(_mero_ctlout, "%s: stopped " 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 @@ -345,6 +345,7 @@ forkMserver(char *database, sabdb** stat dp->err = pfde[0]; close(pfde[1]); dp->next = NULL; + dp->type = MERODB; dp->pid = pid; dp->dbname = strdup(database); 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 @@ -861,6 +861,7 @@ main(int argc, char *argv[]) _mero_topdp = &dpcons; _mero_topdp->pid = 0; + _mero_topdp->type = MERO; _mero_topdp->dbname = NULL; /* where should our msg output go to? */ @@ -902,6 +903,7 @@ main(int argc, char *argv[]) close(pfd[1]); d->pid = getpid(); + d->type = MERO; d->dbname = "merovingian"; /* separate entry for the neighbour discovery service */ @@ -921,6 +923,7 @@ main(int argc, char *argv[]) d->err = pfd[0]; _mero_discerr = fdopen(pfd[1], "a"); d->pid = getpid(); + d->type = MERO; d->dbname = "discovery"; d->next = NULL; @@ -941,6 +944,7 @@ main(int argc, char *argv[]) d->err = pfd[0]; _mero_ctlerr = fdopen(pfd[1], "a"); d->pid = getpid(); + d->type = MERO; d->dbname = "control"; d->next = NULL; diff --git a/tools/merovingian/daemon/merovingian.h b/tools/merovingian/daemon/merovingian.h --- a/tools/merovingian/daemon/merovingian.h +++ b/tools/merovingian/daemon/merovingian.h @@ -54,9 +54,15 @@ char *newErr(_In_z_ _Printf_format_strin void terminateProcess(void *p); void logFD(int fd, char *type, char *dbname, long long int pid, FILE *stream); +typedef enum _mtype { + MERO = 1, + MERODB, +} mtype; + typedef struct _dpair { int out; /* where to read stdout messages from */ int err; /* where to read stderr messages from */ + mtype type; /* type of process */ pid_t pid; /* this process' id */ char *dbname; /* the database that this server serves */ struct _dpair* next; _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list