Changeset: 79fa7856d349 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=79fa7856d349 Modified Files: tools/merovingian/daemon/controlrunner.c tools/merovingian/daemon/forkmserver.c tools/merovingian/daemon/merovingian.c tools/merovingian/daemon/merovingian.h Branch: Oct2020 Log Message:
Backed out changeset b16621c82dbc diffs (189 lines): 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 @@ -400,7 +400,6 @@ static void ctl_handle_client( // Kill it appropriately if (strcmp(p, "stop") == 0) { - bool terminated; /* make an attempt to shut down the profiler first. */ if ((e = shutdown_profiler(q, &stats)) != NULL) { free(e); @@ -409,13 +408,9 @@ static void ctl_handle_client( /* then kill it */ if (dp) pthread_mutex_lock(&dp->fork_lock); - if (pid != -1) - terminated = terminateProcess(q, pid, mtype); - if (dp) { - if (terminated) - dp->pid = -1; + terminateProcess(q, pid, mtype); + if (dp) pthread_mutex_unlock(&dp->fork_lock); - } Mfprintf(_mero_ctlout, "%s: stopped " "database '%s'\n", origin, q); } else { 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 @@ -34,15 +34,13 @@ * The terminateProcess function tries to let the given mserver process * shut down gracefully within a given time-out. If that fails, it * sends the deadly SIGKILL signal to the mserver process and returns. - * - * Returns a boolean indicating if the process was shutdown succesfuly. */ -bool +void terminateProcess(char *dbname, pid_t pid, mtype type) { sabdb *stats; char *er; - int i, killed, e; + int i; confkeyval *kv; er = msab_getStatus(&stats, dbname); @@ -50,13 +48,13 @@ terminateProcess(char *dbname, pid_t pid Mfprintf(stderr, "cannot terminate process %lld: %s\n", (long long int)pid, er); free(er); - return false; + return; } if (stats == NULL) { Mfprintf(stderr, "strange, process %lld serves database '%s' " "which does not exist\n", (long long int)pid, dbname); - return false; + return; } if (stats->pid != pid) { @@ -67,7 +65,7 @@ terminateProcess(char *dbname, pid_t pid dbname, (long long int)pid ); - return false; + return; } assert(stats->pid == pid); @@ -80,13 +78,13 @@ terminateProcess(char *dbname, pid_t pid "(pid %lld) has crashed\n", dbname, (long long int)pid); msab_freeStatus(&stats); - return false; + return; case SABdbInactive: Mfprintf(stdout, "database '%s' appears to have shut down already\n", dbname); fflush(stdout); msab_freeStatus(&stats); - return false; + return; case SABdbStarting: Mfprintf(stderr, "database '%s' appears to be starting up\n", dbname); @@ -95,19 +93,19 @@ terminateProcess(char *dbname, pid_t pid default: Mfprintf(stderr, "unknown state: %d\n", (int)stats->state); msab_freeStatus(&stats); - return false; + return; } if (type == MEROFUN) { multiplexDestroy(dbname); msab_freeStatus(&stats); - return true; + return; } else if (type != MERODB) { /* barf */ Mfprintf(stderr, "cannot stop merovingian process role: %s\n", dbname); msab_freeStatus(&stats); - return false; + return; } /* ok, once we get here, we'll be shutting down the server */ @@ -137,12 +135,12 @@ terminateProcess(char *dbname, pid_t pid Mfprintf (stderr, "database '%s' crashed after SIGTERM\n", dbname); msab_freeStatus(&stats); - return true; + return; case SABdbInactive: Mfprintf(stdout, "database '%s' has shut down\n", dbname); fflush(stdout); msab_freeStatus(&stats); - return true; + return; default: Mfprintf(stderr, "unknown state: %d\n", (int)stats->state); break; @@ -152,16 +150,8 @@ terminateProcess(char *dbname, pid_t pid Mfprintf(stderr, "timeout of %s seconds expired, sending process %lld" " (database '%s') the KILL signal\n", kv->val, (long long int)pid, dbname); - killed = kill(pid, SIGKILL); - e = errno; + kill(pid, SIGKILL); msab_freeStatus(&stats); - if (killed == -1) { - Mfprintf(stderr, "sending KILL signal to process %lld (database '%s')" - " failed: %s\n", (long long int)pid, dbname, strerror(e)); - return false; - } else { - return true; - } } /** @@ -779,16 +769,14 @@ forkMserver(const char *database, sabdb* if (scen == NULL) { /* we don't know what it's doing, but we don't like it * any case, so kill it */ - if (terminateProcess(dp->dbname, dp->pid, MERODB)) - dp->pid = -1; + terminateProcess(dp->dbname, dp->pid, MERODB); msab_freeStatus(stats); pthread_mutex_unlock(&dp->fork_lock); return(newErr("database '%s' did not initialise the sql " "scenario", database)); } } else if (dp->pid != -1) { - if (terminateProcess(dp->dbname, dp->pid, MERODB)) - dp->pid = -1; + terminateProcess(dp->dbname, dp->pid, MERODB); msab_freeStatus(stats); pthread_mutex_unlock(&dp->fork_lock); return(newErr( 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 @@ -314,8 +314,7 @@ doTerminateProcess(void *p) { dpair dp = p; pthread_mutex_lock(&dp->fork_lock); - if (dp->pid != -1 && terminateProcess(dp->dbname, dp->pid, dp->type)) - dp->pid = -1; + terminateProcess(dp->dbname, dp->pid, dp->type); pthread_mutex_unlock(&dp->fork_lock); return NULL; } diff --git a/tools/merovingian/daemon/merovingian.h b/tools/merovingian/daemon/merovingian.h --- a/tools/merovingian/daemon/merovingian.h +++ b/tools/merovingian/daemon/merovingian.h @@ -59,7 +59,7 @@ typedef struct _dpair { char *newErr(_In_z_ _Printf_format_string_ const char *fmt, ...) __attribute__((__format__(__printf__, 1, 2))); -bool terminateProcess(char *dbname, pid_t pid, mtype type); +void terminateProcess(char *dbname, pid_t pid, mtype type); void logFD(int fd, char *type, char *dbname, long long int pid, FILE *stream, int rest); extern char *_mero_mserver; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list