Changeset: b63d12cd8bab for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b63d12cd8bab Modified Files: gdk/gdk_logger.c testing/Mtest.py.in Branch: transaction-replication Log Message:
Merge with default branch Manual merge updated 32->64 bit upgrade code diffs (148 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -258,10 +258,11 @@ la_bat_clear(logger *lg, logaction *la) static int log_read_seq(logger *lg, logformat *l) { - lng seq = l->nr; + int seq = (int) l->nr; lng val; BUN p; + assert(l->nr <= (lng) INT_MAX); if (mnstr_readLng(lg->log, &val) != 1) { fprintf(stderr, "!ERROR: log_read_seq: read failed\n"); return LOG_ERR; @@ -1474,28 +1475,37 @@ logger_load(int debug, char* fn, char fi curid = -1; /* shouldn't happen? */ fseek(fp, off, SEEK_SET); - if ((fp1 = fopen(bak, "r")) != NULL) { - /* file indicating that we need to do - * a 32->64 bit OID conversion exists; - * record the fact in case we get - * interrupted, and set the flag so - * that we actually do what's asked */ - fclose(fp1); - /* first create a versioned file using - * the current log id */ - fp1 = fopen(cvfile, "w"); - fprintf(fp1, "%d\n", curid); - fclose(fp1); - /* then remove the unversioned file - * that gdk_bbp created (in this - * order!) */ - unlink(bak); - /* set the flag that we need to convert */ - lg->read32bitoid = 1; - } else if ((fp1 = fopen(cvfile, "r")) != NULL) { - /* the versioned conversion file - * exists: check version */ - int newid; + if ((fp1 = fopen(bak, "r")) != NULL) { + /* file indicating that we need to do + * a 32->64 bit OID conversion exists; + * record the fact in case we get + * interrupted, and set the flag so + * that we actually do what's asked */ + fclose(fp1); + /* first create a versioned file using + * the current log id */ + if ((fp1 = fopen(cvfile, "w")) == NULL || + fprintf(fp1, "%d\n", curid) < 2 || + fflush(fp1) != 0 || /* make sure it's save on disk */ +#if defined(_MSC_VER) + _commit(_fileno(fp1)) < 0 || +#elif defined(HAVE_FDATASYNC) + fdatasync(fileno(fp1)) < 0 || +#elif defined(HAVE_FSYNC) + fsync(fileno(fp1)) < 0 || +#endif + fclose(fp1) != 0) + logger_fatal("Logger_new: failed to write %s\n", cvfile, 0, 0); + /* then remove the unversioned file + * that gdk_bbp created (in this + * order!) */ + unlink(bak); + /* set the flag that we need to convert */ + lg->read32bitoid = 1; + } else if ((fp1 = fopen(cvfile, "r")) != NULL) { + /* the versioned conversion file + * exists: check version */ + int newid; if (fscanf(fp1, "%d", &newid) == 1 && newid == curid) { diff --git a/testing/Mtest.py.in b/testing/Mtest.py.in --- a/testing/Mtest.py.in +++ b/testing/Mtest.py.in @@ -2084,6 +2084,8 @@ def RunTest(env, TST, BusyPorts, COND, o errcode = F_SEGV elif tres == 'abort': errcode = F_ABRT + elif tres == 'socket': + errcode = F_SOCK elif tres == 'error': errcode = F_WARN elif tres is not None: @@ -2106,6 +2108,12 @@ def RunTest(env, TST, BusyPorts, COND, o ##rm -f .new.left-over.tmp.bats. $TSTTRGBASE/Tests/.old.left-over.tmp.bats. ##if [ -f .all.left-over.tmp.bats. ] ; then mv -f .all.left-over.tmp.bats. $TSTTRGBASE/Tests/.old.left-over.tmp.bats. ; fi + if tres == 'socket': + if quiet: + STDOUT.write("\n%s : Socket!\n" % TST) + elif verbose: + STDOUT.write("(Socket!) ") + if tres == 'timeout': if quiet: STDOUT.write("\n%s : Timeout!\n" % TST) @@ -2344,7 +2352,9 @@ def RunTest(env, TST, BusyPorts, COND, o FailedOut, FailedErr) if not verbose and not quiet: - if tres == 'timeout': + if tres == 'socket': + STDOUT.write("%sSOCKET%s" % (PURPLE, BLACK)) + elif tres == 'timeout': STDOUT.write("%sTIMEOUT%s" % (PURPLE, BLACK)) elif tres == 'recursion': STDOUT.write("%sRECURSION%s" % (PURPLE, BLACK)) @@ -2965,22 +2975,20 @@ def DoIt(env, SERVER, CALL, TST, EXT, PR return None # Try to detect segfaults and the like - TO = re.compile("(^(|[^#]*[\t ])((Memory|Segmentation) [Ff]ault|Bus [Ee]rror|Aborted|Assertion (|.* )failed[:\.]|!FATAL: BATSIGabort:)([ \t]|$))", re.MULTILINE) - # FIXME: this begs for a much nicer solution (100% copy of below) - for f in (TestErrFile, TestOutFile): - if os.path.isfile(f): - for l in open(f): - if TO.search(l): - return 'segfault' - # Try to detect aborts due to too deep recursion - TO = re.compile("aborted too deep recursion", re.MULTILINE) - # FIXME: this begs for a much nicer solution (100% copy of above) - for f in (TestErrFile, TestOutFile): - if os.path.isfile(f): - for l in open(f): - if TO.search(l): - return 'recursion' + for (regexp, msg) in [("(^(|[^#]*[\t ])((Memory|Segmentation) [Ff]ault|Bus [Ee]rror|Aborted|Assertion (|.* )failed[:\.]|!FATAL: BATSIGabort:)([ \t]|$))", + 'segfault'), + ("aborted too deep recursion", + 'recursion'), + ("mal_mapi\.listen:operation failed: bind to stream socket port", + 'socket')]: + TO = re.compile(regexp, re.MULTILINE) + # FIXME: this begs for a much nicer solution (100% copy of below) + for f in (TestErrFile, TestOutFile): + if os.path.isfile(f): + for l in open(f): + if TO.search(l): + return msg return None _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list