Update of /cvsroot/monetdb/MonetDB5/src/tools
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv11861
Modified Files:
merovingian.mx
Log Message:
- Don't try to start a database under maintenance.
- Inheritance from your parent sometimes sucks. Make sure that the
listening socket of Merovingian isn't being kept by child mservers
that aren't stopped when Merovingian shuts down.
Index: merovingian.mx
===================================================================
RCS file: /cvsroot/monetdb/MonetDB5/src/tools/merovingian.mx,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- merovingian.mx 29 Aug 2007 08:59:05 -0000 1.32
+++ merovingian.mx 29 Aug 2007 09:47:28 -0000 1.33
@@ -358,7 +358,7 @@
* forbidden by restart policy. (TODO)
*/
static err
-forkMserver(str database, sabdb** stats, dpair dp)
+forkMserver(str database, sabdb** stats, dpair dp, int sock)
{
pid_t pid;
str er;
@@ -431,6 +431,7 @@
break;
case SABdbMaintenance:
merlog("database '%s' is under maintenance", database);
+ return(NO_ERR);
break;
default:
SABAOTHfreeStatus(stats);
@@ -465,6 +466,9 @@
dup2(pfde[1], 2);
close(pfde[1]);
+ /* we don't want the listening socket of the parent */
+ close(sock);
+
/* we don't use stdin, neither should mserver ... */
close(0);
@@ -696,7 +700,7 @@
return(newErr("no database running, and no database
specified"));
}
} else {
- err e = forkMserver(database, &top, dp);
+ err e = forkMserver(database, &top, dp, sock);
if (e != NO_ERR) {
if (top == NULL) {
stream_printf(fout, "!no such database '%s',
please create it first\n", database);
@@ -854,10 +858,12 @@
freeErr(e);
}
} while (_keepListening);
+ shutdown(sock, SHUT_RDWR);
close(sock);
return(NO_ERR);
error:
+ shutdown(sock, SHUT_RDWR);
close(sock);
return(newErr("accept connection: %s", msg));
}
@@ -1104,7 +1110,7 @@
e = openConnection(&sock, MEROV_PORT);
if (e == NO_ERR) {
for (argp = 1; argp < argc; argp++) {
- e = forkMserver(argv[argp], &stats, d);
+ e = forkMserver(argv[argp], &stats, d, sock);
if (e != NO_ERR) {
fprintf(stderr, "failed to fork mserver: %s\n",
getErrMsg(e));
freeErr(e);
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Monetdb-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-checkins