Changeset: f2e4890a3eca for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f2e4890a3eca Modified Files: gdk/gdk_logger.c tools/merovingian/daemon/controlrunner.c Branch: default Log Message:
Merge with Dec2016 branch. diffs (91 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -1377,8 +1377,6 @@ logger_load(int debug, const char* fn, c /* this is intentional - even if catalog_bid is 0, but the logger is shared, * force it to find the persistent catalog */ if (catalog_bid == 0 && !lg->shared) { - log_bid bid = 0; - /* catalog does not exist, so the log file also * shouldn't exist */ if (fp != NULL) { @@ -1401,22 +1399,19 @@ logger_load(int debug, const char* fn, c /* give the catalog bats names so we can find them * next time */ - bid = lg->catalog_bid->batCacheid; - BBPincref(bid, TRUE); + BBPincref(lg->catalog_bid->batCacheid, TRUE); snprintf(bak, sizeof(bak), "%s_catalog_bid", fn); if (BBPrename(lg->catalog_bid->batCacheid, bak) < 0) logger_fatal("logger_load: BBPrename to %s failed", bak, 0, 0); - bid = lg->catalog_nme->batCacheid; - BBPincref(bid, TRUE); + BBPincref(lg->catalog_nme->batCacheid, TRUE); snprintf(bak, sizeof(bak), "%s_catalog_nme", fn); if (BBPrename(lg->catalog_nme->batCacheid, bak) < 0) logger_fatal("logger_load: BBPrename to %s failed", bak, 0, 0); - bid = lg->dcatalog->batCacheid; - BBPincref(bid, TRUE); + BBPincref(lg->dcatalog->batCacheid, TRUE); snprintf(bak, sizeof(bak), "%s_dcatalog", fn); if (BBPrename(lg->dcatalog->batCacheid, bak) < 0) logger_fatal("logger_load: BBPrename to %s failed", @@ -1484,7 +1479,6 @@ logger_load(int debug, const char* fn, c if (d == NULL) logger_fatal("Logger_new: cannot create " "dcatalog bat", 0, 0, 0); - BBPincref(d->batCacheid, TRUE); if (BBPrename(d->batCacheid, bak) < 0) logger_fatal("logger_load: BBPrename to %s failed", bak, 0, 0); } @@ -1503,6 +1497,9 @@ logger_load(int debug, const char* fn, c lg->catalog_bid = b; lg->catalog_nme = n; lg->dcatalog = d; + BBPincref(lg->catalog_bid->batCacheid, TRUE); + BBPincref(lg->catalog_nme->batCacheid, TRUE); + BBPincref(lg->dcatalog->batCacheid, TRUE); BATloop(b, p, q) { bat bid = *(log_bid *) Tloc(b, p); oid pos = p; 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 @@ -338,13 +338,17 @@ static void ctl_handle_client( dp = _mero_topdp->next; /* don't need the console/log */ while (dp != NULL) { if (dp->type == MERODB && strcmp(dp->dbname, q) == 0) { - pthread_mutex_unlock(&_mero_topdp_lock); if (strcmp(p, "stop") == 0) { - terminateProcess(dp->pid, strdup(dp->dbname), dp->type, 1); + pid_t pid = dp->pid; + char *dbname = strdup(dp->dbname); + mtype type = dp->type; + pthread_mutex_unlock(&_mero_topdp_lock); + terminateProcess(pid, dbname, type, 1); Mfprintf(_mero_ctlout, "%s: stopped " "database '%s'\n", origin, q); } else { kill(dp->pid, SIGKILL); + pthread_mutex_unlock(&_mero_topdp_lock); Mfprintf(_mero_ctlout, "%s: killed " "database '%s'\n", origin, q); } @@ -353,8 +357,10 @@ static void ctl_handle_client( break; } else if (dp->type == MEROFUN && strcmp(dp->dbname, q) == 0) { /* multiplexDestroy needs topdp lock to remove itself */ + char *dbname = strdup(dp->dbname); pthread_mutex_unlock(&_mero_topdp_lock); - multiplexDestroy(dp->dbname); + multiplexDestroy(dbname); + free(dbname); len = snprintf(buf2, sizeof(buf2), "OK\n"); send_client("="); break; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list