Changeset - 34093903b505
[Not reviewed]
beta
0 2 0
Marcin Kuzminski - 13 years ago 2013-04-05 23:16:21
marcin@python-works.com
repo rescann should detach forks of zombie repos,
this way we ensure we do proper cleanup of such repos.
2 files changed with 8 insertions and 4 deletions:
0 comments (0 inline, 0 general)
rhodecode/lib/utils.py
Show inline comments
 
@@ -467,9 +467,9 @@ def repo2db_mapper(initial_repo_list, re
 
                log.debug("Removing non-existing repository found in db `%s`" %
 
                          repo.repo_name)
 
                try:
 
                    sa.delete(repo)
 
                    removed.append(repo.repo_name)
 
                    RepoModel(sa).delete(repo, forks='detach', fs_remove=False)
 
                    sa.commit()
 
                    removed.append(repo.repo_name)
 
                except Exception:
 
                    #don't hold further removals on error
 
                    log.error(traceback.format_exc())
rhodecode/model/repo.py
Show inline comments
 
@@ -466,7 +466,7 @@ class RepoModel(BaseModel):
 
        from rhodecode.lib.celerylib import tasks, run_task
 
        run_task(tasks.create_repo_fork, form_data, cur_user)
 

	
 
    def delete(self, repo, forks=None):
 
    def delete(self, repo, forks=None, fs_remove=True):
 
        """
 
        Delete given repository, forks parameter defines what do do with
 
        attached forks. Throws AttachedForksError if deleted repo has attached
 
@@ -474,6 +474,7 @@ class RepoModel(BaseModel):
 

	
 
        :param repo:
 
        :param forks: str 'delete' or 'detach'
 
        :param fs_remove: remove(archive) repo from filesystem
 
        """
 
        repo = self._get_repo(repo)
 
        if repo:
 
@@ -491,7 +492,10 @@ class RepoModel(BaseModel):
 
            owner = repo.user
 
            try:
 
                self.sa.delete(repo)
 
                self.__delete_repo(repo)
 
                if fs_remove:
 
                    self.__delete_repo(repo)
 
                else:
 
                    log.debug('skipping removal from filesystem')
 
                log_delete_repository(old_repo_dict,
 
                                      deleted_by=owner.username)
 
            except Exception:
0 comments (0 inline, 0 general)