Changeset: b42ce916c639 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b42ce916c639
Modified Files:
        gdk/gdk.h
        gdk/gdk_atoms.c
        gdk/gdk_bbp.c
        gdk/gdk_hash.c
        gdk/gdk_heap.c
        gdk/gdk_imprints.c
        gdk/gdk_logger.c
        gdk/gdk_orderidx.c
        gdk/gdk_storage.c
        gdk/gdk_system.c
        monetdb5/mal/mal.h
        tools/mserver/mserver5.1.in
Branch: default
Log Message:

Merge with Jul2017 branch.


diffs (truncated from 338 to 300 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -450,10 +450,8 @@
 #define XPROPDEBUG     if (GDKdebug & XPROPMASK)
 */
 
-/* JOINPROPMASK not used anymore
-#define JOINPROPMASK   (1<<24)
-#define JOINPROPCHK    if (!(GDKdebug & JOINPROPMASK))
-*/
+#define NOSYNCMASK     (1<<24)
+
 #define DEADBEEFMASK   (1<<25)
 #define DEADBEEFCHK    if (!(GDKdebug & DEADBEEFMASK))
 
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -1205,7 +1205,8 @@ strCleanHash(Heap *h, int rebuild)
        if (memcmp(newhash, h->base, sizeof(newhash)) != 0) {
                memcpy(h->base, newhash, sizeof(newhash));
                if (h->storage == STORE_MMAP) {
-                       (void) MT_msync(h->base, GDK_STRHASHSIZE);
+                       if (!(GDKdebug & NOSYNCMASK))
+                               (void) MT_msync(h->base, GDK_STRHASHSIZE);
                } else
                        h->dirty = 1;
        }
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1894,17 +1894,13 @@ BBPdir_subcommit(int cnt, bat *subcommit
        }
 
        if (fflush(nbbpf) == EOF ||
-           (!(GDKdebug & FORCEMITOMASK) &&
-#ifdef NATIVE_WIN32
-            _commit(_fileno(nbbpf)) < 0
-#else
-#ifdef HAVE_FDATASYNC
-            fdatasync(fileno(nbbpf)) < 0
-#else
-#ifdef HAVE_FSYNC
-            fsync(fileno(nbbpf)) < 0
-#endif
-#endif
+           (!(GDKdebug & NOSYNCMASK)
+#if defined(NATIVE_WIN32)
+            && _commit(_fileno(nbbpf)) < 0
+#elif defined(HAVE_FDATASYNC)
+            && fdatasync(fileno(nbbpf)) < 0
+#elif defined(HAVE_FSYNC)
+            && fsync(fileno(nbbpf)) < 0
 #endif
                    )) {
                GDKsyserror("BBPdir_subcommit: Syncing BBP.dir file failed\n");
@@ -1958,18 +1954,15 @@ BBPdir(int cnt, bat *subcommit)
        }
 
        if (fflush(fp) == EOF ||
-#ifdef NATIVE_WIN32
-           _commit(_fileno(fp)) < 0
-#else
-#ifdef HAVE_FDATASYNC
-           fdatasync(fileno(fp)) < 0
-#else
-#ifdef HAVE_FSYNC
-           fsync(fileno(fp)) < 0
+           (!(GDKdebug & NOSYNCMASK)
+#if defined(NATIVE_WIN32)
+            && _commit(_fileno(fp)) < 0
+#elif defined(HAVE_FDATASYNC)
+            && fdatasync(fileno(fp)) < 0
+#elif defined(HAVE_FSYNC)
+            && fsync(fileno(fp)) < 0
 #endif
-#endif
-#endif
-               ) {
+                   )) {
                GDKsyserror("BBPdir: Syncing BBP.dir file failed\n");
                goto bailout;
        }
diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -282,7 +282,7 @@ BAThashsync(void *arg)
                        ((size_t *) hp->base)[0] |= 1 << 24;
                        if (write(fd, hp->base, SIZEOF_SIZE_T) >= 0) {
                                failed = ""; /* not failed */
-                               if (!(GDKdebug & FORCEMITOMASK)) {
+                               if (!(GDKdebug & NOSYNCMASK)) {
 #if defined(NATIVE_WIN32)
                                        _commit(fd);
 #elif defined(HAVE_FDATASYNC)
diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -435,13 +435,15 @@ GDKupgradevarheap(BAT *b, var_t v, int c
                        base += ret;
                }
                if (ret < 0 ||
+                   (!(GDKdebug & NOSYNCMASK)
 #if defined(NATIVE_WIN32)
-                   _commit(fd) < 0 ||
+                    && _commit(fd) < 0
 #elif defined(HAVE_FDATASYNC)
-                   fdatasync(fd) < 0 ||
+                    && fdatasync(fd) < 0
 #elif defined(HAVE_FSYNC)
-                   fsync(fd) < 0 ||
+                    && fsync(fd) < 0
 #endif
+                           ) ||
                    close(fd) < 0) {
                        /* something went wrong: abandon ship */
                        GDKsyserror("GDKupgradevarheap: syncing heap to disk 
failed\n");
@@ -1254,9 +1256,10 @@ HEAP_recover(Heap *h, const var_t *offse
        }
        h->cleanhash = 0;
        if (dirty) {
-               if (h->storage == STORE_MMAP)
-                       (void) MT_msync(h->base, dirty);
-               else
+               if (h->storage == STORE_MMAP) {
+                       if (!(GDKdebug & NOSYNCMASK))
+                               (void) MT_msync(h->base, dirty);
+               } else
                        h->dirty = 1;
        }
 }
diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c
--- a/gdk/gdk_imprints.c
+++ b/gdk/gdk_imprints.c
@@ -461,7 +461,7 @@ BATimprints(BAT *b)
                        ((size_t *) imprints->imprints.base)[0] |= (size_t) 1 
<< 16;
                        if (write(fd, imprints->imprints.base, sizeof(size_t)) 
< 0)
                                perror("write imprints");
-                       if (!(GDKdebug & FORCEMITOMASK)) {
+                       if (!(GDKdebug & NOSYNCMASK)) {
 #if defined(NATIVE_WIN32)
                                _commit(fd);
 #elif defined(HAVE_FDATASYNC)
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1581,13 +1581,15 @@ logger_load(int debug, const char *fn, c
                        goto error;
                }
                if (fflush(fp) < 0 ||
+                   (!(GDKdebug & NOSYNCMASK)
 #if defined(_MSC_VER)
-                   _commit(_fileno(fp)) < 0 ||
+                    && _commit(_fileno(fp)) < 0
 #elif defined(HAVE_FDATASYNC)
-                   fdatasync(fileno(fp)) < 0 ||
+                    && fdatasync(fileno(fp)) < 0
 #elif defined(HAVE_FSYNC)
-                   fsync(fileno(fp)) < 0 ||
+                    && fsync(fileno(fp)) < 0
 #endif
+                           ) ||
                    fclose(fp) < 0) {
                        remove(filename);
                        GDKerror("logger_load: closing log file %s failed",
@@ -2232,14 +2234,15 @@ logger_exit(logger *lg)
                }
 
                if (fflush(fp) < 0 ||
+                   (!(GDKdebug & NOSYNCMASK)
 #if defined(WIN32)
-                   _commit(_fileno(fp)) < 0
+                    && _commit(_fileno(fp)) < 0
 #elif defined(HAVE_FDATASYNC)
-                   fdatasync(fileno(fp)) < 0
+                    && fdatasync(fileno(fp)) < 0
 #elif defined(HAVE_FSYNC)
-                   fsync(fileno(fp)) < 0
+                    && fsync(fileno(fp)) < 0
 #endif
-                       ) {
+                           )) {
                        (void) fclose(fp);
                        fprintf(stderr, "!ERROR: logger_exit: flush of %s 
failed\n",
                                filename);
@@ -2775,7 +2778,7 @@ log_tend(logger *lg)
        if (res != GDK_SUCCEED ||
            log_write_format(lg, &l) != GDK_SUCCEED ||
            mnstr_flush(lg->log) ||
-           mnstr_fsync(lg->log) ||
+           (!(GDKdebug & NOSYNCMASK) && mnstr_fsync(lg->log)) ||
            pre_allocate(lg) != GDK_SUCCEED) {
                fprintf(stderr, "!ERROR: log_tend: write failed\n");
                return GDK_FAIL;
@@ -2816,7 +2819,7 @@ log_sequence_(logger *lg, int seq, lng v
        if (log_write_format(lg, &l) != GDK_SUCCEED ||
            !mnstr_writeLng(lg->log, val) ||
            (flush && mnstr_flush(lg->log)) ||
-           (flush && mnstr_fsync(lg->log)) ||
+           (flush && !(GDKdebug & NOSYNCMASK) && mnstr_fsync(lg->log)) ||
            pre_allocate(lg) != GDK_SUCCEED) {
                fprintf(stderr, "!ERROR: log_sequence_: write failed\n");
                return GDK_FAIL;
@@ -2843,7 +2846,7 @@ log_sequence_nrs(logger *lg)
        }
        if (ok != GDK_SUCCEED ||
            mnstr_flush(lg->log) ||
-           mnstr_fsync(lg->log)) {
+           (!(GDKdebug & NOSYNCMASK) && mnstr_fsync(lg->log))) {
                fprintf(stderr, "!ERROR: log_sequence_nrs: write failed\n");
                return GDK_FAIL;
        }
diff --git a/gdk/gdk_orderidx.c b/gdk/gdk_orderidx.c
--- a/gdk/gdk_orderidx.c
+++ b/gdk/gdk_orderidx.c
@@ -29,7 +29,7 @@ BATidxsync(void *arg)
                    (fd = GDKfdlocate(hp->farmid, hp->filename, "rb+", NULL)) 
>= 0) {
                        ((oid *) hp->base)[0] |= (oid) 1 << 24;
                        if (write(fd, hp->base, SIZEOF_SIZE_T) >= 0) {
-                               if (!(GDKdebug & FORCEMITOMASK)) {
+                               if (!(GDKdebug & NOSYNCMASK)) {
 #if defined(NATIVE_WIN32)
                                        _commit(fd);
 #elif defined(HAVE_FDATASYNC)
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -417,7 +417,7 @@ GDKsave(int farmid, const char *nme, con
        IODEBUG fprintf(stderr, "#GDKsave: name=%s, ext=%s, mode %d, 
dosync=%d\n", nme, ext ? ext : "", (int) mode, dosync);
 
        if (mode == STORE_MMAP) {
-               if (dosync && size && MT_msync(buf, size) < 0)
+               if (dosync && size && !(GDKdebug & NOSYNCMASK) && MT_msync(buf, 
size) < 0)
                        err = -1;
                if (err)
                        GDKsyserror("GDKsave: error on: name=%s, ext=%s, "
@@ -459,15 +459,13 @@ GDKsave(int farmid, const char *nme, con
                                                (unsigned) MIN(1 << 30, size),
                                                ret);
                        }
-                       if (dosync && !(GDKdebug & FORCEMITOMASK) &&
+                       if (dosync && !(GDKdebug & NOSYNCMASK)
 #if defined(NATIVE_WIN32)
-                           _commit(fd) < 0
+                           && _commit(fd) < 0
 #elif defined(HAVE_FDATASYNC)
-                           fdatasync(fd) < 0
+                           && fdatasync(fd) < 0
 #elif defined(HAVE_FSYNC)
-                           fsync(fd) < 0
-#else
-                           0
+                           && fsync(fd) < 0
 #endif
                                ) {
                                GDKsyserror("GDKsave: error on: name=%s, "
@@ -672,8 +670,8 @@ BATmsyncImplementation(void *arg)
 void
 BATmsync(BAT *b)
 {
-       /* we don't sync views */
-       if (isVIEW(b))
+       /* we don't sync views or if we're told not to */
+       if (isVIEW(b) || (GDKdebug & NOSYNCMASK))
                return;
        /* we don't sync transients */
        if (b->theap.farmid != 0 ||
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -552,15 +552,23 @@ MT_create_thread(MT_Id *t, void (*f) (vo
        (void) sigfillset(&new_mask);
        MT_thread_sigmask(&new_mask, &orig_mask);
 #endif
-       pthread_attr_init(&attr);
-       pthread_attr_setstacksize(&attr, THREAD_STACK_SIZE);
-       pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
+       if(pthread_attr_init(&attr))
+               return -1;
+       if(pthread_attr_setstacksize(&attr, THREAD_STACK_SIZE)) {
+               pthread_attr_destroy(&attr);
+               return -1;
+       }
+       if(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE)) {
+               pthread_attr_destroy(&attr);
+               return -1;
+       }
        if (d == MT_THR_DETACHED) {
                p = malloc(sizeof(struct posthread));
                if (p == NULL) {
 #ifdef HAVE_PTHREAD_SIGMASK
                        MT_thread_sigmask(&orig_mask, NULL);
 #endif
+                       pthread_attr_destroy(&attr);
                        return -1;
                }
                p->func = f;
diff --git a/monetdb5/mal/mal.h b/monetdb5/mal/mal.h
--- a/monetdb5/mal/mal.h
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to