diff rhodecode/lib/utils.py @ 2808:3a007d806f0f beta

Fixing issues of cache invalidation for multiple instances running in rhodecode. - during server start always register all cache keys for all repositories - Don't clear cache markers on start since multiple instances can clear each other out
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 05 Sep 2012 22:09:25 +0200
parents ffaaeb5a5a69
children 070d2eacd48b
line wrap: on
line diff
--- a/rhodecode/lib/utils.py	Wed Sep 05 20:24:21 2012 +0200
+++ b/rhodecode/lib/utils.py	Wed Sep 05 22:09:25 2012 +0200
@@ -413,6 +413,11 @@
         raise Exception('Missing administrative account !')
     added = []
 
+#    # clear cache keys
+#    log.debug("Clearing cache keys now...")
+#    CacheInvalidation.clear_cache()
+#    sa.commit()
+
     for name, repo in initial_repo_list.items():
         group = map_groups(name)
         db_repo = rm.get_by_repo_name(name)
@@ -438,6 +443,10 @@
         elif install_git_hook:
             if db_repo.repo_type == 'git':
                 ScmModel().install_git_hook(db_repo.scm_instance)
+        # during starting install all cache keys for all repositories in the
+        # system, this will register all repos and multiple instances
+        key, _prefix, _org_key = CacheInvalidation._get_key(name)
+        CacheInvalidation._get_or_create_key(key, _prefix, _org_key, commit=False)
     sa.commit()
     removed = []
     if remove_obsolete:
@@ -455,10 +464,6 @@
                     log.error(traceback.format_exc())
                     sa.rollback()
 
-    # clear cache keys
-    log.debug("Clearing cache keys now...")
-    CacheInvalidation.clear_cache()
-    sa.commit()
     return added, removed