Changeset: 19017c9aa954 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=19017c9aa954
Modified Files:
tools/merovingian/daemon/forkmserver.c
Branch: default
Log Message:
Merge with Jul2017 branch.
diffs (truncated from 943 to 300 lines):
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
@@ -52,7 +52,7 @@ terminateProcess(pid_t pid, char *dbname
if (lock)
pthread_mutex_unlock(&fork_lock);
Mfprintf(stderr, "cannot terminate process %lld: %s\n",
- (long long int)pid, er);
+ (long long int)pid, er);
free(er);
free(dbname);
return;
@@ -62,47 +62,47 @@ terminateProcess(pid_t pid, char *dbname
if (lock)
pthread_mutex_unlock(&fork_lock);
Mfprintf(stderr, "strange, process %lld serves database '%s' "
- "which does not exist\n", (long long int)pid,
dbname);
+ "which does not exist\n", (long long int)pid,
dbname);
free(dbname);
return;
}
switch (stats->state) {
- case SABdbRunning:
- /* ok, what we expect */
+ case SABdbRunning:
+ /* ok, what we expect */
break;
- case SABdbCrashed:
- if (lock)
- pthread_mutex_unlock(&fork_lock);
- Mfprintf(stderr, "cannot shut down database '%s',
mserver "
- "(pid %lld) has crashed\n",
- dbname, (long long int)pid);
- msab_freeStatus(&stats);
- free(dbname);
- return;
- case SABdbInactive:
- if (lock)
- pthread_mutex_unlock(&fork_lock);
- Mfprintf(stdout, "database '%s' appears to have shut
down already\n",
- dbname);
- fflush(stdout);
- msab_freeStatus(&stats);
- free(dbname);
- return;
- case SABdbStarting:
- if (lock)
- pthread_mutex_unlock(&fork_lock);
- Mfprintf(stderr, "database '%s' appears to be starting
up\n",
- dbname);
- /* starting up, so we'll go to the shut down phase */
- break;
- default:
- if (lock)
- pthread_mutex_unlock(&fork_lock);
- Mfprintf(stderr, "unknown state: %d\n",
(int)stats->state);
- msab_freeStatus(&stats);
- free(dbname);
- return;
+ case SABdbCrashed:
+ if (lock)
+ pthread_mutex_unlock(&fork_lock);
+ Mfprintf(stderr, "cannot shut down database '%s', mserver "
+ "(pid %lld) has crashed\n",
+ dbname, (long long int)pid);
+ msab_freeStatus(&stats);
+ free(dbname);
+ return;
+ case SABdbInactive:
+ if (lock)
+ pthread_mutex_unlock(&fork_lock);
+ Mfprintf(stdout, "database '%s' appears to have shut down
already\n",
+ dbname);
+ fflush(stdout);
+ msab_freeStatus(&stats);
+ free(dbname);
+ return;
+ case SABdbStarting:
+ if (lock)
+ pthread_mutex_unlock(&fork_lock);
+ Mfprintf(stderr, "database '%s' appears to be starting up\n",
+ dbname);
+ /* starting up, so we'll go to the shut down phase */
+ break;
+ default:
+ if (lock)
+ pthread_mutex_unlock(&fork_lock);
+ Mfprintf(stderr, "unknown state: %d\n", (int)stats->state);
+ msab_freeStatus(&stats);
+ free(dbname);
+ return;
}
if (type == MEROFUN) {
@@ -124,7 +124,7 @@ terminateProcess(pid_t pid, char *dbname
/* ok, once we get here, we'll be shutting down the server */
Mfprintf(stdout, "sending process %lld (database '%s') the "
- "TERM signal\n", (long long int)pid, dbname);
+ "TERM signal\n", (long long int)pid, dbname);
kill(pid, SIGTERM);
kv = findConfKey(_mero_props, "exittimeout");
for (i = 0; i < atoi(kv->val) * 2; i++) {
@@ -138,38 +138,38 @@ terminateProcess(pid_t pid, char *dbname
/* don't die, just continue, so we KILL in the end */
} else if (stats == NULL) {
Mfprintf(stderr, "hmmmm, database '%s' suddenly doesn't
exist "
- "any more\n", dbname);
+ "any more\n", dbname);
} else {
switch (stats->state) {
- case SABdbRunning:
- case SABdbStarting:
- /* ok, try again */
+ case SABdbRunning:
+ case SABdbStarting:
+ /* ok, try again */
break;
- case SABdbCrashed:
- if (lock)
-
pthread_mutex_unlock(&fork_lock);
- Mfprintf (stderr, "database '%s'
crashed after SIGTERM\n",
- dbname);
- msab_freeStatus(&stats);
- free(dbname);
- return;
- case SABdbInactive:
- if (lock)
-
pthread_mutex_unlock(&fork_lock);
- Mfprintf(stdout, "database '%s' has
shut down\n", dbname);
- fflush(stdout);
- msab_freeStatus(&stats);
- free(dbname);
- return;
- default:
- Mfprintf(stderr, "unknown state: %d\n",
(int)stats->state);
+ case SABdbCrashed:
+ if (lock)
+ pthread_mutex_unlock(&fork_lock);
+ Mfprintf (stderr, "database '%s' crashed after
SIGTERM\n",
+ dbname);
+ msab_freeStatus(&stats);
+ free(dbname);
+ return;
+ case SABdbInactive:
+ if (lock)
+ pthread_mutex_unlock(&fork_lock);
+ Mfprintf(stdout, "database '%s' has shut
down\n", dbname);
+ fflush(stdout);
+ msab_freeStatus(&stats);
+ free(dbname);
+ return;
+ default:
+ Mfprintf(stderr, "unknown state: %d\n",
(int)stats->state);
break;
}
}
}
Mfprintf(stderr, "timeout of %s seconds expired, sending process %lld"
- " (database '%s') the KILL signal\n",
- kv->val, (long long int)pid, dbname);
+ " (database '%s') the KILL signal\n",
+ kv->val, (long long int)pid, dbname);
kill(pid, SIGKILL);
msab_freeStatus(&stats);
free(dbname);
@@ -200,6 +200,24 @@ forkMserver(char *database, sabdb** stat
char upmax[8];
confkeyval *ckv, *kv, *list;
SABdbState state;
+ char *sabdbfarm;
+ char dbpath[1024];
+ char dbextra_path[1024];
+ char port[24];
+ char muri[512]; /* possibly undersized */
+ char usock[512];
+ char mydoproxy;
+ char nthreads[24];
+ char nclients[24];
+ char pipeline[512];
+ char *readonly = NULL;
+ char *embeddedr = NULL;
+ char *embeddedpy = NULL;
+ char *dbextra = NULL;
+ char *argv[512]; /* for the exec arguments */
+ char property_other[1024];
+ int c = 0;
+ unsigned int mport;
er = msab_getStatus(stats, database);
if (er != NULL) {
@@ -256,14 +274,14 @@ forkMserver(char *database, sabdb** stat
if ((*stats)->locked == 1) {
if (force == 0) {
Mfprintf(stdout, "%s '%s' is under maintenance\n",
- kv->val, database);
+ kv->val, database);
freeConfFile(ckv);
free(ckv);
pthread_mutex_unlock(&fork_lock);
return(NO_ERR);
} else {
Mfprintf(stdout, "startup of %s under maintenance "
- "'%s' forced\n", kv->val, database);
+ "'%s' forced\n", kv->val, database);
}
}
@@ -280,48 +298,48 @@ forkMserver(char *database, sabdb** stat
}
switch ((*stats)->state) {
- case SABdbRunning:
- freeConfFile(ckv);
- free(ckv);
- pthread_mutex_unlock(&fork_lock);
- return(NO_ERR);
- case SABdbCrashed:
- t = localtime(&info.lastcrash);
- strftime(tstr, sizeof(tstr), "%Y-%m-%d %H:%M:%S", t);
- secondsToString(upmin, info.minuptime, 1);
- secondsToString(upavg, info.avguptime, 1);
- secondsToString(upmax, info.maxuptime, 1);
- Mfprintf(stdout, "%s '%s' has crashed after start on
%s, "
- "attempting restart, "
- "up min/avg/max: %s/%s/%s, "
- "crash average: %d.00 %.2f %.2f
(%d-%d=%d)\n",
- kv->val, database, tstr,
- upmin, upavg, upmax,
- info.crashavg1, info.crashavg10,
info.crashavg30,
- info.startcntr, info.stopcntr,
info.crashcntr);
+ case SABdbRunning:
+ freeConfFile(ckv);
+ free(ckv);
+ pthread_mutex_unlock(&fork_lock);
+ return(NO_ERR);
+ case SABdbCrashed:
+ t = localtime(&info.lastcrash);
+ strftime(tstr, sizeof(tstr), "%Y-%m-%d %H:%M:%S", t);
+ secondsToString(upmin, info.minuptime, 1);
+ secondsToString(upavg, info.avguptime, 1);
+ secondsToString(upmax, info.maxuptime, 1);
+ Mfprintf(stdout, "%s '%s' has crashed after start on %s, "
+ "attempting restart, "
+ "up min/avg/max: %s/%s/%s, "
+ "crash average: %d.00 %.2f %.2f (%d-%d=%d)\n",
+ kv->val, database, tstr,
+ upmin, upavg, upmax,
+ info.crashavg1, info.crashavg10,
info.crashavg30,
+ info.startcntr, info.stopcntr, info.crashcntr);
break;
- case SABdbInactive:
- secondsToString(upmin, info.minuptime, 1);
- secondsToString(upavg, info.avguptime, 1);
- secondsToString(upmax, info.maxuptime, 1);
- Mfprintf(stdout, "starting %s '%s', "
- "up min/avg/max: %s/%s/%s, "
- "crash average: %d.00 %.2f %.2f
(%d-%d=%d)\n",
- kv->val, database,
- upmin, upavg, upmax,
- info.crashavg1, info.crashavg10,
info.crashavg30,
- info.startcntr, info.stopcntr,
info.crashcntr);
+ case SABdbInactive:
+ secondsToString(upmin, info.minuptime, 1);
+ secondsToString(upavg, info.avguptime, 1);
+ secondsToString(upmax, info.maxuptime, 1);
+ Mfprintf(stdout, "starting %s '%s', "
+ "up min/avg/max: %s/%s/%s, "
+ "crash average: %d.00 %.2f %.2f (%d-%d=%d)\n",
+ kv->val, database,
+ upmin, upavg, upmax,
+ info.crashavg1, info.crashavg10,
info.crashavg30,
+ info.startcntr, info.stopcntr, info.crashcntr);
break;
- default:
- /* this also includes SABdbStarting, which we shouldn't
ever
- * see due to the global starting lock */
- state = (*stats)->state;
- msab_freeStatus(stats);
- freeConfFile(ckv);
- free(ckv);
- pthread_mutex_unlock(&fork_lock);
- return(newErr("unknown or impossible state: %d",
- (int)state));
+ default:
+ /* this also includes SABdbStarting, which we shouldn't ever
+ * see due to the global starting lock */
+ state = (*stats)->state;
+ msab_freeStatus(stats);
+ freeConfFile(ckv);
+ free(ckv);
+ pthread_mutex_unlock(&fork_lock);
+ return(newErr("unknown or impossible state: %d",
+ (int)state));
}
/* create the pipes (filedescriptors) now, such that we and the
@@ -364,10 +382,9 @@ forkMserver(char *database, sabdb** stat
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list