From: Michal 'vorner' Vaner Date: Fri, 1 Jul 2011 15:41:59 +0000 (+0200) Subject: [trac741] Messages for the rrset cache X-Git-Tag: perftcpdns_before_epoll~263^2~1^2^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1a915fef55d9902cb4e0c5d077e9c602101419dc;p=thirdparty%2Fkea.git [trac741] Messages for the rrset cache --- diff --git a/src/lib/cache/cache_messages.mes b/src/lib/cache/cache_messages.mes index 357adc594d..b583487302 100644 --- a/src/lib/cache/cache_messages.mes +++ b/src/lib/cache/cache_messages.mes @@ -44,17 +44,17 @@ $NAMESPACE isc::cache % CACHE_RESOLVER_LOOKUP_MSG looking up message in resolver cache for %1/%2 -% CACHE_RESOLVER_LOOKUP_RRSET looking up rrset in resolver cache for %1/%2 +% CACHE_RESOLVER_LOOKUP_RRSET looking up RRset in resolver cache for %1/%2 % CACHE_RESOLVER_NO_QUESTION answer message for %1/%2 has empty question section % CACHE_RESOLVER_LOCAL_MSG message for %1/%2 found in local zone data -% CACHE_RESOLVER_LOCAL_RRSET rrset for %1/%2 found in local zone data +% CACHE_RESOLVER_LOCAL_RRSET RRset for %1/%2 found in local zone data % CACHE_RESOLVER_UPDATE_MSG updating message for %1/%2/%3 -% CACHE_RESOLVER_UPDATE_RRSET updating rrset for %1/%2/%3 +% CACHE_RESOLVER_UPDATE_RRSET updating RRset for %1/%2/%3 % CACHE_RESOLVER_UNKNOWN_CLASS_MSG no cache for class %1 @@ -65,3 +65,17 @@ $NAMESPACE isc::cache % CACHE_RESOLVER_UPDATE_UNKNOWN_CLASS_MSG no cache for class %1 % CACHE_RESOLVER_UPDATE_UNKNOWN_CLASS_RRSET no cache for class %1 + +% CACHE_RRSET_INIT initializing RRset cache for %2 RRsets of class %1 + +% CACHE_RRSET_LOOKUP looking up %1/%2 in RRset cache + +% CACHE_RRSET_EXPIRED found expired RRset %1/%2 + +% CACHE_RRSET_NOT_FOUND no RRset found for %1/%2 + +% CACHE_RRSET_UPDATE updating RRset %1/%2/%3 in the cache + +% CACHE_RRSET_UNTRUSTED not replacing old RRset for %1/%2/%3, it has higher trust level + +% CACHE_RRSET_REMOVE_OLD removing old RRset for %1/%2/%3 to make space for new one diff --git a/src/lib/cache/rrset_cache.cc b/src/lib/cache/rrset_cache.cc index da19b6d2a0..4a77d48ed8 100644 --- a/src/lib/cache/rrset_cache.cc +++ b/src/lib/cache/rrset_cache.cc @@ -14,8 +14,9 @@ #include -#include #include "rrset_cache.h" +#include "logger.h" +#include #include #include #include @@ -34,20 +35,28 @@ RRsetCache::RRsetCache(uint32_t cache_size, rrset_lru_((3 * cache_size), new HashDeleter(rrset_table_)) { + LOG_DEBUG(logger, DBG_TRACE_BASIC, CACHE_RRSET_INIT).arg(cache_size). + arg(rrset_class); } RRsetEntryPtr RRsetCache::lookup(const isc::dns::Name& qname, const isc::dns::RRType& qtype) { + LOG_DEBUG(logger, DBG_TRACE_DATA, CACHE_RRSET_LOOKUP).arg(qname). + arg(qtype); const string entry_name = genCacheEntryName(qname, qtype); - RRsetEntryPtr entry_ptr = rrset_table_.get(HashKey(entry_name, RRClass(class_))); + + RRsetEntryPtr entry_ptr = rrset_table_.get(HashKey(entry_name, + RRClass(class_))); if (entry_ptr) { if (entry_ptr->getExpireTime() > time(NULL)) { // Only touch the non-expired rrset entries rrset_lru_.touch(entry_ptr); return (entry_ptr); } else { + LOG_DEBUG(logger, DBG_TRACE_DATA, CACHE_RRSET_EXPIRED).arg(qname). + arg(qtype); // the rrset entry has expired, so just remove it from // hash table and lru list. rrset_table_.remove(entry_ptr->hashKey()); @@ -55,19 +64,31 @@ RRsetCache::lookup(const isc::dns::Name& qname, } } + LOG_DEBUG(logger, DBG_TRACE_DATA, CACHE_RRSET_NOT_FOUND).arg(qname). + arg(qtype); return (RRsetEntryPtr()); } RRsetEntryPtr -RRsetCache::update(const isc::dns::RRset& rrset, const RRsetTrustLevel& level) { +RRsetCache::update(const isc::dns::RRset& rrset, + const RRsetTrustLevel& level) +{ + LOG_DEBUG(logger, DBG_TRACE_DATA, CACHE_RRSET_UPDATE).arg(rrset.getName()). + arg(rrset.getType()).arg(rrset.getClass()); // TODO: If the RRset is an NS, we should update the NSAS as well // lookup first RRsetEntryPtr entry_ptr = lookup(rrset.getName(), rrset.getType()); if (entry_ptr) { if (entry_ptr->getTrustLevel() > level) { + LOG_DEBUG(logger, DBG_TRACE_DATA, CACHE_RRSET_UNTRUSTED). + arg(rrset.getName()).arg(rrset.getType()). + arg(rrset.getClass()); // existed rrset entry is more authoritative, just return it return (entry_ptr); } else { + LOG_DEBUG(logger, DBG_TRACE_DATA, CACHE_RRSET_REMOVE_OLD). + arg(rrset.getName()).arg(rrset.getType()). + arg(rrset.getClass()); // Remove the old rrset entry from the lru list. rrset_lru_.remove(entry_ptr); }