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

Reply via email to