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