Changeset: c3fce99529f1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c3fce99529f1
Modified Files:
sql/storage/bat/bat_storage.c
Branch: Aug2024
Log Message:
Avoid a data race.
diffs (35 lines):
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -4618,7 +4618,6 @@ add_offsets(BUN slot, size_t nr, size_t
static int
claim_segmentsV2(sql_trans *tr, sql_table *t, storage *s, size_t cnt, BUN
*offset, BAT **offsets, bool locked)
{
- int in_transaction = segments_in_transaction(tr, t), ok = LOG_OK;
assert(s->segs);
ulng oldest = store_oldest(tr->store, NULL);
BUN slot = 0;
@@ -4626,6 +4625,7 @@ claim_segmentsV2(sql_trans *tr, sql_tabl
if (!locked)
lock_table(tr->store, t->base.id);
+ int in_transaction = segments_in_transaction(tr, t), ok = LOG_OK;
/* naive vacuum approach, iterator through segments, use deleted
segments or create new segment at the end */
for (segment *seg = s->segs->h, *p = NULL; seg && cnt && ok == LOG_OK;
p = seg, seg = ATOMIC_PTR_GET(&seg->next)) {
if (seg->deleted && seg->ts < oldest && seg->end > seg->start)
{ /* reuse old deleted or rolled back append */
@@ -4707,7 +4707,6 @@ claim_segments(sql_trans *tr, sql_table
{
if (cnt > 1 && offsets)
return claim_segmentsV2(tr, t, s, cnt, offset, offsets, locked);
- int in_transaction = segments_in_transaction(tr, t), ok = LOG_OK;
assert(s->segs);
ulng oldest = store_oldest(tr->store, NULL);
BUN slot = 0;
@@ -4715,6 +4714,7 @@ claim_segments(sql_trans *tr, sql_table
if (!locked)
lock_table(tr->store, t->base.id);
+ int in_transaction = segments_in_transaction(tr, t), ok = LOG_OK;
/* naive vacuum approach, iterator through segments, check for large
enough deleted segments
* or create new segment at the end */
for (segment *seg = s->segs->h, *p = NULL; seg && ok == LOG_OK; p =
seg, seg = ATOMIC_PTR_GET(&seg->next)) {
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]