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

Reply via email to