Changeset: f7d7df6b897a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f7d7df6b897a
Modified Files:
        gdk/gdk_align.c
        gdk/gdk_strimps.c
Branch: string_imprints
Log Message:

Take a lock before getting the strimp

This needs some more thought


diffs (49 lines):

diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c
--- a/gdk/gdk_align.c
+++ b/gdk/gdk_align.c
@@ -378,7 +378,6 @@ VIEWdestroy(BAT *b)
        IMPSdestroy(b);
        OIDXdestroy(b);
        PROPdestroy(b);
-       STRMPdestroy(b);
        VIEWunlink(b);
 
        MT_lock_set(&b->theaplock);
diff --git a/gdk/gdk_strimps.c b/gdk/gdk_strimps.c
--- a/gdk/gdk_strimps.c
+++ b/gdk/gdk_strimps.c
@@ -501,12 +501,16 @@ STRMPfilter(BAT *b, BAT *s, const str q)
                BAT *pb = BBP_cache(VIEWtparent(b));
                if (!BATcheckstrimps(pb))
                        goto sfilter_fail;
+               MT_lock_set(&pb->batIdxLock);
                strmps = pb->tstrimps;
+               MT_lock_unset(&pb->batIdxLock);
        }
        else {
                if (!BATcheckstrimps(b))
                        goto sfilter_fail;
+               MT_lock_set(&b->batIdxLock);
                strmps = b->tstrimps;
+               MT_lock_unset(&b->batIdxLock);
        }
 
        ncand = canditer_init(&ci, b, s);
@@ -793,12 +797,17 @@ STRMPappendBitstring(BAT *b, const str s
 void
 STRMPdecref(Strimps *strimps, bool remove)
 {
+       TRC_DEBUG(ACCELERATOR, "Decrement ref count of %s to " ULLFMT "\n",
+                 strimps->strimps.filename, ATOMIC_GET(&strimps->strimps.refs) 
- 1);
        strimps->strimps.remove |= remove;
        if (ATOMIC_DEC(&strimps->strimps.refs) == 0) {
                ATOMIC_DESTROY(&strimps->strimps.refs);
                HEAPfree(&strimps->strimps, strimps->strimps.remove);
                GDKfree(strimps);
        }
+
+}
+
 void
 STRMPincref(Strimps *strimps)
 {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to