Changeset: 530559f07b47 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/530559f07b47
Modified Files:
sql/storage/objectset.c
Branch: Dec2023
Log Message:
use private lock (not global store lock) in objectset
diffs (51 lines):
diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c
--- a/sql/storage/objectset.c
+++ b/sql/storage/objectset.c
@@ -55,6 +55,7 @@ typedef struct objectset {
sql_allocator *sa;
destroy_fptr destroy;
MT_RWLock rw_lock; /*readers-writer lock to protect the links
(chains) in the objectversion chain.*/
+ MT_Lock lock; /* global objectset lock for os_add/del */
versionhead *name_based_h;
versionhead *name_based_t;
versionhead *id_based_h;
@@ -668,6 +669,7 @@ os_new(sql_allocator *sa, destroy_fptr d
};
os->destroy = destroy;
MT_rwlock_init(&os->rw_lock, "sa_readers_lock");
+ MT_lock_init(&os->lock, "single_writer_lock");
}
return os;
@@ -685,6 +687,7 @@ os_destroy(objectset *os, sql_store stor
{
if (ATOMIC_DEC(&os->refcnt) > 0)
return;
+ MT_lock_destroy(&os->lock);
MT_rwlock_destroy(&os->rw_lock);
ATOMIC_DESTROY(&os->refcnt);
versionhead* n=os->id_based_h;
@@ -928,9 +931,9 @@ os_add_(objectset *os, struct sql_trans
int
os_add(objectset *os, struct sql_trans *tr, const char *name, sql_base *b)
{
- store_lock(tr->store);
+ MT_lock_set(&os->lock);
int res = os_add_(os, tr, name, b);
- store_unlock(tr->store);
+ MT_lock_unset(&os->lock);
return res;
}
@@ -1031,9 +1034,9 @@ os_del_(objectset *os, struct sql_trans
int
os_del(objectset *os, struct sql_trans *tr, const char *name, sql_base *b)
{
- store_lock(tr->store);
+ MT_lock_set(&os->lock);
int res = os_del_(os, tr, name, b);
- store_unlock(tr->store);
+ MT_lock_unset(&os->lock);
return res;
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]