diff rhodecode/controllers/feed.py @ 3772:910ad1ffee99 beta

invalidation: merge .invalidate and .set_valid as .test_and_set_valid This simplifies the internal API and avoids leaking CacheInvalidation instances and cache keys.
author Mads Kiilerich <madski@unity3d.com>
date Wed, 03 Apr 2013 15:56:12 +0200
parents ec6354949623
children 8e2cd46f765b
line wrap: on
line diff
--- a/rhodecode/controllers/feed.py	Sun Apr 21 06:10:08 2013 +0200
+++ b/rhodecode/controllers/feed.py	Wed Apr 03 15:56:12 2013 +0200
@@ -141,10 +141,9 @@
             return feed.writeString('utf-8')
 
         key = repo_name + '_ATOM'
-        inv = CacheInvalidation.invalidate(key)
-        if inv is not None:
+        valid = CacheInvalidation.test_and_set_valid(key)
+        if not valid:
             region_invalidate(_get_feed_from_cache, None, key)
-            CacheInvalidation.set_valid(inv.cache_key)
         return _get_feed_from_cache(key)
 
     def rss(self, repo_name):
@@ -174,8 +173,7 @@
             return feed.writeString('utf-8')
 
         key = repo_name + '_RSS'
-        inv = CacheInvalidation.invalidate(key)
-        if inv is not None:
+        valid = CacheInvalidation.test_and_set_valid(key)
+        if not valid:
             region_invalidate(_get_feed_from_cache, None, key)
-            CacheInvalidation.set_valid(inv.cache_key)
         return _get_feed_from_cache(key)