Loading src/authdb.cpp +12 −6 Original line number Diff line number Diff line Loading @@ -533,7 +533,7 @@ namespace authdb { if(!dinfo.found) return nullptr; auto backend = std::make_unique<AuthBackend>( auto backend = std::make_shared<AuthBackend>( dinfo.storageType, dinfo.storageOptions, dinfo.domainName); std::unique_lock<std::shared_mutex> wl(_DomainCacheMtx); Loading Loading @@ -564,7 +564,7 @@ namespace authdb { dinfo = db.resolve(did); } if (!dinfo.found) continue; auto backend = std::make_unique<AuthBackend>( auto backend = std::make_shared<AuthBackend>( dinfo.storageType, dinfo.storageOptions, dinfo.domainName); std::unique_lock<std::shared_mutex> wl(_DomainCacheMtx); auto key = std::string(did.value, did.value+16); Loading Loading @@ -594,9 +594,15 @@ namespace authdb { << e.what() << std::endl; } /* Vacuum all cached domain backends */ std::vector<std::shared_ptr<AuthBackend>> domainsToVacuum; { std::shared_lock<std::shared_mutex> rl(_DomainCacheMtx); for (auto &[key, domBackend] : _DomainCache) { domainsToVacuum.push_back(domBackend); } } for (auto &domBackend : domainsToVacuum) { try { size_t before = 0, after = 0; domBackend->vacuum(before, after); Loading @@ -621,7 +627,7 @@ namespace authdb { std::vector<char> _AuthJs; std::vector<char> _AuthCss; std::shared_mutex _DomainCacheMtx; std::map<std::string, std::unique_ptr<AuthBackend>> _DomainCache; std::map<std::string, std::shared_ptr<AuthBackend>> _DomainCache; }; }; Loading Loading
src/authdb.cpp +12 −6 Original line number Diff line number Diff line Loading @@ -533,7 +533,7 @@ namespace authdb { if(!dinfo.found) return nullptr; auto backend = std::make_unique<AuthBackend>( auto backend = std::make_shared<AuthBackend>( dinfo.storageType, dinfo.storageOptions, dinfo.domainName); std::unique_lock<std::shared_mutex> wl(_DomainCacheMtx); Loading Loading @@ -564,7 +564,7 @@ namespace authdb { dinfo = db.resolve(did); } if (!dinfo.found) continue; auto backend = std::make_unique<AuthBackend>( auto backend = std::make_shared<AuthBackend>( dinfo.storageType, dinfo.storageOptions, dinfo.domainName); std::unique_lock<std::shared_mutex> wl(_DomainCacheMtx); auto key = std::string(did.value, did.value+16); Loading Loading @@ -594,9 +594,15 @@ namespace authdb { << e.what() << std::endl; } /* Vacuum all cached domain backends */ std::vector<std::shared_ptr<AuthBackend>> domainsToVacuum; { std::shared_lock<std::shared_mutex> rl(_DomainCacheMtx); for (auto &[key, domBackend] : _DomainCache) { domainsToVacuum.push_back(domBackend); } } for (auto &domBackend : domainsToVacuum) { try { size_t before = 0, after = 0; domBackend->vacuum(before, after); Loading @@ -621,7 +627,7 @@ namespace authdb { std::vector<char> _AuthJs; std::vector<char> _AuthCss; std::shared_mutex _DomainCacheMtx; std::map<std::string, std::unique_ptr<AuthBackend>> _DomainCache; std::map<std::string, std::shared_ptr<AuthBackend>> _DomainCache; }; }; Loading