### ${_('Invalidate Cache for Repository')}

#### ${_('Manually invalidate the repository cache. On the next access a repository cache will be recreated.')}

${_('Cache purge can be automated by such api call. Can be called periodically in crontab etc.')}
`${h.api_call_example(method='invalidate_cache', args={"repoid": c.rhodecode_db_repo.repo_name})}`

${h.secure_form(h.route_path('edit_repo_caches', repo_name=c.repo_name), request=request)}
${h.end_form()}

### ${_('Invalidation keys')}

Cache keys used to signal repository state changes after operations such as push, strip etc.

${_('Show all')} ${len(c.rhodecode_db_repo.cache_keys)}

${_('Key')} | ${_('State UID')} | ${_('Namespace')} | ${_('Active')}
--- | --- | --- | ---
%for cache in c.rhodecode_db_repo.cache_keys:
`${cache.cache_key}` | `${cache.cache_state_uid}` | `${cache.cache_args}` | ${h.bool2icon(cache.cache_active)}
%endfor

### ${_('Cache keys')}

Cache keys used for storing cached values of repository stats, file tree history and file tree search. Invalidating the cache will remove those entries.

    backend: ${c.region.actual_backend.__class__}
    % if c.rhodecode_user.is_admin:
    store: ${c.region.actual_backend.get_store()}
    % else:
    store: ${c.region.actual_backend.get_store().__class__}
    % endif

${_('Show all')} ${len(c.repo_keys)}

${_('Key')} | ${_('Region')}
--- | ---
%for cache_key in c.repo_keys:
`${cache_key}` | ${c.region.name}
%endfor

### ${_('Shadow Repositories')}

% if c.shadow_repos: % for shadow_repo in c.shadow_repos:
${shadow_repo}
% endfor % else:
${_('No Shadow repositories exist for this repository.')}
% endif

### ${_('Diff Caches')}

Number and size of stored cached diff for commits and pull requests.

% if c.rhodecode_user.is_admin:
% else:
% endif
${_('Cached diff name')}: | ${c.rhodecode_db_repo.cached_diffs_dir} | ${c.rhodecode_db_repo.cached_diffs_relative_dir}
${_('Cached diff files')}: | ${c.cached_diff_count}
${_('Cached diff size')}: | ${h.format_byte_size(c.cached_diff_size)}