DNSSECKeeper::keycache_t DNSSECKeeper::s_keycache;
DNSSECKeeper::metacache_t DNSSECKeeper::s_metacache;
+int64_t DNSSECKeeper::s_metaCacheCleanActions = 0;
ReadWriteLock DNSSECKeeper::s_metacachelock;
ReadWriteLock DNSSECKeeper::s_keycachelock;
AtomicCounter DNSSECKeeper::s_ops;
{
WriteLock l(&s_metacachelock);
s_metacache.erase(name);
+ ++s_metaCacheCleanActions;
return true;
}
meta = iter->d_value;
fromCache = true;
}
+ else {
+ d_metaCacheCleanAction = s_metaCacheCleanActions;
+ }
}
if (!fromCache) {
nce.d_value = std::move(meta);
{
WriteLock l(&s_metacachelock);
+ if(d_metaCacheCleanAction != s_metaCacheCleanActions) {
+ return false;
+ }
lruReplacingInsert<SequencedTag>(s_metacache, nce);
}
}
typedef std::map<std::string, std::vector<std::string> > METAValues;
private:
-
+ int64_t d_metaCacheCleanAction{0};
struct KeyCacheEntry
{
static keycache_t s_keycache;
static metacache_t s_metacache;
+ static int64_t s_metaCacheCleanActions;
static ReadWriteLock s_metacachelock;
static ReadWriteLock s_keycachelock;
static AtomicCounter s_ops;