Changeset: 3e964535d3c8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/3e964535d3c8
Modified Files:
gdk/gdk_bbp.c
Branch: Jan2022
Log Message:
Merge with Jul2021 branch.
diffs (79 lines):
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -3429,8 +3429,8 @@ dirty_bat(bat *i, bool subcommit)
if ((BBP_status(*i) & BBPNEW) &&
BATcheckmodes(b, false) != GDK_SUCCEED) /* check
mmap modes */
*i = -*i; /* error */
- if ((BBP_status(*i) & BBPPERSISTENT) &&
- (subcommit || BATdirty(b)))
+ else if ((BBP_status(*i) & BBPPERSISTENT) &&
+ (subcommit || BATdirty(b)))
return b; /* the bat is loaded,
persistent and dirty */
} else if (BBP_status(*i) & BBPSWAPPED) {
b = (BAT *) BBPquickdesc(*i);
@@ -3883,19 +3883,12 @@ BBPsync(int cnt, bat *restrict subcommit
if (BBP_status(i) & BBPEXISTING) {
if (b != NULL) {
if (BBPbackup(b, subcommit != NULL) !=
GDK_SUCCEED) {
- BBP_status_off(i, BBPSYNCING);
if (lock)
MT_lock_unset(&GDKswapLock(i));
break;
}
- } else {
- /* file has not been moved to
- * backup dir, so no need for
- * other threads to wait */
- BBP_status_off(i, BBPSYNCING);
}
} else {
- BBP_status_off(i, BBPSYNCING);
if (subcommit && (b = BBP_desc(i)) &&
BBP_status(i) & BBPDELETED) {
char o[10];
char *f;
@@ -3946,12 +3939,8 @@ BBPsync(int cnt, bat *restrict subcommit
BATiter bi;
if (BBP_status(i) & BBPPERSISTENT) {
- /* add a fix so that BBPmanager doesn't
- * interfere */
- BBPfix(i);
BAT *b = dirty_bat(&i, subcommit != NULL);
if (i <= 0) {
- decref(-i, false, false, locked_by == 0
|| locked_by != MT_getpid(), __func__);
break;
}
bi = bat_iterator(BBP_desc(i));
@@ -3988,16 +3977,9 @@ BBPsync(int cnt, bat *restrict subcommit
n = BBPdir_step(i, size, n, buf, sizeof(buf),
&obbpf, nbbpf, subcommit != NULL, &bi);
}
bat_iterator_end(&bi);
- if (BBP_status(i) & BBPPERSISTENT) {
- /* can't use BBPunfix because of the
- * "lock" argument: locked_by may be set
- * here */
- decref(i, false, false, locked_by == 0 ||
locked_by != MT_getpid(), __func__);
- }
if (n == -2)
break;
/* we once again have a saved heap */
- BBP_status_off(i, BBPSYNCING);
}
if (idx < cnt)
ret = GDK_FAIL;
@@ -4046,6 +4028,14 @@ BBPsync(int cnt, bat *restrict subcommit
ret == GDK_SUCCEED ? "" : " failed",
(t0 = GDKms()) - t1);
bailout:
+ /* turn off the BBPSYNCING bits for all bats, even when things
+ * didn't go according to plan (i.e., don't check for ret ==
+ * GDK_SUCCEED) */
+ for (int idx = 1; idx < cnt; idx++) {
+ bat i = subcommit ? subcommit[idx] : idx;
+ BBP_status_off(i, BBPSYNCING);
+ }
+
GDKfree(bakdir);
GDKfree(deldir);
return ret;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]