##// END OF EJS Templates
invalidation: inline _get_or_create_inv_obj
Mads Kiilerich -
r3684:e8aff201 beta
parent child Browse files
Show More
@@ -1669,19 +1669,6 b' class CacheInvalidation(Base, BaseModel)'
1669 return "%s%s" % (prefix, key)
1669 return "%s%s" % (prefix, key)
1670
1670
1671 @classmethod
1671 @classmethod
1672 def _get_or_create_inv_obj(cls, key, repo_name):
1673 inv_obj = Session().query(cls).filter(cls.cache_key == key).scalar()
1674 if not inv_obj:
1675 try:
1676 inv_obj = CacheInvalidation(key, repo_name)
1677 Session().add(inv_obj)
1678 Session().commit()
1679 except Exception:
1680 log.error(traceback.format_exc())
1681 Session().rollback()
1682 return inv_obj
1683
1684 @classmethod
1685 def invalidate(cls, key):
1672 def invalidate(cls, key):
1686 """
1673 """
1687 Returns Invalidation object if the local cache with the given key is invalid,
1674 Returns Invalidation object if the local cache with the given key is invalid,
@@ -1693,9 +1680,18 b' class CacheInvalidation(Base, BaseModel)'
1693 repo_name = remove_suffix(repo_name, '_ATOM')
1680 repo_name = remove_suffix(repo_name, '_ATOM')
1694
1681
1695 cache_key = cls._get_cache_key(key)
1682 cache_key = cls._get_cache_key(key)
1696 inv_obj = cls._get_or_create_inv_obj(cache_key, repo_name)
1683 inv_obj = Session().query(cls).filter(cls.cache_key == cache_key).scalar()
1684 if not inv_obj:
1685 try:
1686 inv_obj = CacheInvalidation(cache_key, repo_name)
1687 Session().add(inv_obj)
1688 Session().commit()
1689 except Exception:
1690 log.error(traceback.format_exc())
1691 Session().rollback()
1692 return
1697
1693
1698 if inv_obj and not inv_obj.cache_active:
1694 if not inv_obj.cache_active:
1699 # `cache_active = False` means that this cache
1695 # `cache_active = False` means that this cache
1700 # no longer is valid
1696 # no longer is valid
1701 return inv_obj
1697 return inv_obj
General Comments 0
You need to be logged in to leave comments. Login now