Extract templates caching mechanism from repository model
Currently due to high traffic on issue and merge requests we use Redis caching for template names. However we use caching mechanism on Repository
model which leads to some circular dependencies as for instance:
TemplateFinder.all_template_names(project)
-> Gitlab::Template::IssueTemplate.template_names(project)
-> project.repository.issue_template_names
-> Redis
|| Gitlab::Template::IssueTemplate.template_names_internal(project)
moving templates caching to Gitlab::Template::IssueTemplate
would help us reduce the calling chain to something like:
TemplateFinder.all_template_names(project)
-> Gitlab::Template::IssueTemplate.template_names(project)
-> Redis
|| Gitlab::Template::IssueTemplate.template_names_internal(project)
which is much more straightforward.
Availability & Testing
Run package-and-qa
regression job