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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list