Changeset: 80be56d02cd9 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=80be56d02cd9 Modified Files: Branch: default Log Message:
Merged from Dec2011 diffs (108 lines): diff --git a/tools/merovingian/ChangeLog.Dec2011 b/tools/merovingian/ChangeLog.Dec2011 --- a/tools/merovingian/ChangeLog.Dec2011 +++ b/tools/merovingian/ChangeLog.Dec2011 @@ -1,3 +1,13 @@ # ChangeLog file for sql/src/backends/monet5/merovingian # This file is updated with mchangelog +* Mon Jan 30 2012 Fabian Groffen <[email protected]> +- Fixed problem where version and mserver properties for monetdbd were + not always successfully retrieved. Bug #2982. +- Fixed problem where shutdown of monetdbd would lead to shutting down + database 'control' which does not exist. Bug #2983. +- Fixed issue causing (harmless) 'error reading from control channel' + messages. Bug #2984. +- Resolved problem where remote start/stop/etc. commands with monetdb + would report error 'OK'. Bug #2984. + 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 @@ -228,7 +228,7 @@ command_get(confkeyval *ckv, int argc, c kv = findConfKey(ckv, "port"); snprintf(buf, sizeof(buf), "%s/" CONTROL_SOCK "%d", value, kv->ival); - value = control_send(&res, buf, -1, "", "mserver", 0, NULL); + value = control_send(&res, buf, -1, "", "mserver", 1, NULL); if (value != NULL) { free(value); value = "unknown (failed to connect to monetdbd)"; @@ -284,7 +284,7 @@ command_get(confkeyval *ckv, int argc, c snprintf(buf, sizeof(buf), "%s/" CONTROL_SOCK "%d", value, kv->ival); freeConfFile(cport); - value = control_send(&res, buf, -1, "", "version", 0, NULL); + value = control_send(&res, buf, -1, "", "version", 1, NULL); if (value != NULL) { free(value); value = NULL; 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 @@ -118,7 +118,7 @@ recvWithTimeout(int msgsock, stream *fdi /* stream.h is sooo broken :( */ memset(buf, '\0', buflen); ret = mnstr_read_block(fdin, buf, buflen - 1, 1); - return(ret >= 0 ? (int)strlen(buf) : -(mnstr_errnr(fdin) > 0)); + return(ret >= 0 ? (int)strlen(buf) : mnstr_errnr(fdin) < 0 ? -1 : 0); } else { return(recv(msgsock, buf, buflen, 0)); } @@ -228,7 +228,7 @@ static void ctl_handle_client( if (strcmp(p, "ping") == 0) { #define send_client(P) \ if (fout != NULL) { \ - mnstr_printf(fout, P "%s\n", buf2); \ + mnstr_printf(fout, P "%s", buf2); \ mnstr_flush(fout); \ } else { \ send(msgsock, buf2, len, 0); \ @@ -633,11 +633,13 @@ static void ctl_handle_client( len = snprintf(buf2, sizeof(buf2), "%s (%s)\n", MERO_VERSION, MONETDB_RELEASE); send_client("="); + break; } else if (strcmp(p, "mserver") == 0) { len = snprintf(buf2, sizeof(buf2), "OK\n"); send_client("="); len = snprintf(buf2, sizeof(buf2), "%s\n", _mero_mserver); send_client("="); + break; } else if (strcmp(p, "get") == 0) { confkeyval *props = getDefaultProps(); char *pbuf; @@ -790,6 +792,7 @@ static void ctl_handle_client( len = snprintf(buf2, sizeof(buf2), "unknown command: %s\n", p); send_client("!"); + break; } } } 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 @@ -1166,12 +1166,12 @@ shutdown: /* stop started mservers */ kv = findConfKey(ckv, "exittimeout"); - if (d != NULL && atoi(kv->val) > 0) { + if (d->next != NULL && atoi(kv->val) > 0) { dpair t; threadlist tl = NULL, tlw = tl; pthread_mutex_lock(&_mero_topdp_lock); - t = d; + t = d->next; while (t != NULL) { if (tl == NULL) { tl = tlw = malloc(sizeof(struct _threadlist)); @@ -1185,7 +1185,7 @@ shutdown: { Mfprintf(stderr, "%s: unable to create thread to terminate " "database '%s': %s\n", - argv[0], d->dbname, strerror(thret)); + argv[0], t->dbname, strerror(thret)); tlw->tid = 0; } _______________________________________________ Checkin-list mailing list [email protected] http://mail.monetdb.org/mailman/listinfo/checkin-list
