Changeset: 198a7fddad2f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=198a7fddad2f
Modified Files:
        tools/merovingian/ChangeLog.Aug2011
        tools/merovingian/daemon/merovingian.c
Branch: Aug2011
Log Message:

merovingian: don't just unlink socket files

Only unlink socket files when there is reason to believe that any
existing socket files should be stale.  Also, don't cleanup, if we never
started a socket.

With these actions, an accidential start of another monetdbd using the
same port won't just destroy the socket files from the other.


diffs (44 lines):

diff --git a/tools/merovingian/ChangeLog.Aug2011 
b/tools/merovingian/ChangeLog.Aug2011
--- a/tools/merovingian/ChangeLog.Aug2011
+++ b/tools/merovingian/ChangeLog.Aug2011
@@ -1,3 +1,7 @@
 # ChangeLog file for sql/src/backends/monet5/merovingian
 # This file is updated with mchangelog
 
+* Sun Nov  6 2011 Fabian Groffen <[email protected]>
+- Fixed a bug where monetdbd's socket files from /tmp were removed when
+  a second monetdbd was attempted to be started using the same port.
+
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
@@ -888,8 +888,6 @@ main(int argc, char *argv[])
 
        msab_init(dbfarm, NULL);
 
-       unlink(control_usock);
-       unlink(mapi_usock);
 
        /* write out the pid */
        Mfprintf(pidfile, "%d\n", (int)d->pid);
@@ -902,6 +900,7 @@ main(int argc, char *argv[])
        /* open up connections */
        if (
                        (e = openConnectionTCP(&sock, port, stdout)) == NO_ERR 
&&
+                       (unlink(control_usock) | unlink(mapi_usock) | 1) &&
                        (e = openConnectionUNIX(&socku, mapi_usock, 0, stdout)) 
== NO_ERR &&
                        (e = openConnectionUDP(&usock, discoveryport)) == 
NO_ERR &&
                        (e = openConnectionUNIX(&unsock, control_usock, 
S_IRWXO, _mero_ctlout)) == NO_ERR &&
@@ -976,10 +975,10 @@ main(int argc, char *argv[])
        }
 
        /* control channel is already closed at this point */
-       if (unlink(control_usock) == -1)
+       if (unsock != -1 && unlink(control_usock) == -1)
                Mfprintf(stderr, "unable to unlink control socket '%s': %s\n",
                                control_usock, strerror(errno));
-       if (unlink(mapi_usock) == -1)
+       if (socku != -1 && unlink(mapi_usock) == -1)
                Mfprintf(stderr, "unable to unlink mapi socket '%s': %s\n",
                                mapi_usock, strerror(errno));
 
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to