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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list