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 checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list