diff options
author | Stan Hu <stanhu@gmail.com> | 2019-08-13 19:04:30 +0300 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2019-08-13 19:04:30 +0300 |
commit | e658f9603c99ca6a8ef4c0292b2cdab2916fb09e (patch) | |
tree | 57e0c03ea5dd676c7a53243bf3da20aefafc0ded /app/models | |
parent | 3702ab7317533896c7455357dd6643181666f22b (diff) |
Only expire tag cache once per push
Previously each tag in a push would invoke the Gitaly `FindAllTags` RPC
since the tag cache would be invalidated with every tag.
We can eliminate those extraneous calls by expiring the tag cache once
in `PostReceive` and taking advantage of the cached tags.
Relates to https://gitlab.com/gitlab-org/gitlab-ce/issues/65795
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/repository.rb | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/app/models/repository.rb b/app/models/repository.rb index 58abfaef801..9d45a12fa6e 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -418,25 +418,29 @@ class Repository end # Runs code before pushing (= creating or removing) a tag. + # + # Note that this doesn't expire the tags. You may need to call + # expire_caches_for_tags or expire_tags_cache. def before_push_tag + repository_event(:push_tag) + end + + def expire_caches_for_tags expire_statistics_caches expire_emptiness_caches expire_tags_cache - - repository_event(:push_tag) end # Runs code before removing a tag. def before_remove_tag - expire_tags_cache - expire_statistics_caches + expire_caches_for_tags repository_event(:remove_tag) end # Runs code after removing a tag. def after_remove_tag - expire_tags_cache + expire_caches_for_tags end # Runs code after the HEAD of a repository is changed. |