Browse Source

[trac741] Messages for the rrset cache

Michal 'vorner' Vaner 14 years ago
parent
commit
1a915fef55
2 changed files with 41 additions and 6 deletions
  1. 17 3
      src/lib/cache/cache_messages.mes
  2. 24 3
      src/lib/cache/rrset_cache.cc

+ 17 - 3
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

+ 24 - 3
src/lib/cache/rrset_cache.cc

@@ -14,8 +14,9 @@
 
 #include <config.h>
 
-#include <string>
 #include "rrset_cache.h"
+#include "logger.h"
+#include <string>
 #include <nsas/nsas_entry_compare.h>
 #include <nsas/hash_table.h>
 #include <nsas/hash_deleter.h>
@@ -34,20 +35,28 @@ RRsetCache::RRsetCache(uint32_t cache_size,
     rrset_lru_((3 * cache_size),
                   new HashDeleter<RRsetEntry>(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);
         }