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

Reply via email to