Add back mutex

This commit is contained in:
Thomas Krijnen
2026-05-08 10:07:34 +02:00
parent 6ad5fbb27e
commit a1efdccb4b
3 changed files with 5 additions and 0 deletions
+2
View File
@@ -361,6 +361,8 @@ ifcopenshell::impl::rocks_db_file_storage::rocksdb_types_iterator::value_type co
express::Base ifcopenshell::impl::rocks_db_file_storage::assert_existance(size_t number, instance_ref r) {
#ifdef IFOPSH_WITH_ROCKSDB
std::lock_guard<std::mutex> lock(instance_cache_mutex_);
if (r == ifcopenshell::impl::rocks_db_file_storage::entityinstance_ref) {
auto it = instance_cache_.find(number);
if (it != instance_cache_.end()) {
+1
View File
@@ -2872,6 +2872,7 @@ void ifcopenshell::file::unbatch() {
void ifcopenshell::file::reset_identity_cache() {
std::visit([](auto& x) {
if constexpr (std::is_same_v<std::decay_t<decltype(x)>, impl::rocks_db_file_storage>) {
std::lock_guard<std::mutex> lock(x.instance_cache_mutex_);
x.instance_cache_.clear();
x.type_instance_cache_.clear();
}
+2
View File
@@ -35,6 +35,7 @@ namespace rocksdb {
#include <vector>
#include <deque>
#include <list>
#include <mutex>
#include <set>
#ifndef SWIG
@@ -354,6 +355,7 @@ namespace ifcopenshell {
// @todo this is silly, but we cannot have the same type, this should be just a pointer then on the file side?
typedef std::map<uint32_t, std::shared_ptr<instance_data>> entity_by_iden_cache_t;
entity_by_iden_cache_t instance_cache_, type_instance_cache_;
std::mutex instance_cache_mutex_;
// @todo all these size_ts should probably be uint32_t for consistency with in-mem storage