Changeset: ab3f3dcd9e1b for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/ab3f3dcd9e1b Modified Files: gdk/gdk_bbp.c Branch: Jul2021 Log Message:
After setting BBPUNLOADING bit, make sure it is cleared. This may mean, clear (destroy) the bat, or just clear the bit, depending on whether BBPDELETED is set. diffs (35 lines): diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -2623,16 +2623,22 @@ decref(bat i, bool logical, bool release if (lock) MT_lock_unset(&GDKswapLock(i)); - if (swap && b != NULL) { - if (lrefs == 0 && (BBP_status(i) & BBPDELETED) == 0) { - /* free memory (if loaded) and delete from - * disk (if transient but saved) */ - BBPdestroy(b); + if (swap) { + if (b != NULL) { + if (lrefs == 0 && (BBP_status(i) & BBPDELETED) == 0) { + /* free memory (if loaded) and delete from + * disk (if transient but saved) */ + BBPdestroy(b); + } else { + TRC_DEBUG(BAT_, "%s unload and free bat %d\n", func, i); + /* free memory of transient */ + if (BBPfree(b) != GDK_SUCCEED) + return -1; /* indicate failure */ + } + } else if (lrefs == 0 && (BBP_status(i) & BBPDELETED) == 0) { + BBPclear(i, true); } else { - TRC_DEBUG(BAT_, "%s unload and free bat %d\n", func, i); - /* free memory of transient */ - if (BBPfree(b) != GDK_SUCCEED) - return -1; /* indicate failure */ + BBP_status_off(i, BBPUNLOADING); } } if (tp) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list