From 6f5ebc4bae8524585b5377d3056664730e0e1381 Mon Sep 17 00:00:00 2001 From: Bob Van Landuyt Date: Sun, 22 Oct 2017 20:16:41 +0300 Subject: [PATCH] Only cache the event for the fork-source when it exists It is possible for a fork not to have a source anymore, in this case we don't need to keep track of the push event. --- app/services/users/last_push_event_service.rb | 4 ++-- .../unreleased/bvl-fix-push-event-service-for-forks.yml | 5 +++++ spec/services/users/last_push_event_service_spec.rb | 1 - 3 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 changelogs/unreleased/bvl-fix-push-event-service-for-forks.yml diff --git a/app/services/users/last_push_event_service.rb b/app/services/users/last_push_event_service.rb index f2bfb60604f..57e446d7f30 100644 --- a/app/services/users/last_push_event_service.rb +++ b/app/services/users/last_push_event_service.rb @@ -16,8 +16,8 @@ module Users user_cache_key ] - if event.project.forked? - keys << project_cache_key(event.project.forked_from_project) + if forked_from = event.project.forked_from_project + keys << project_cache_key(forked_from) end keys.each { |key| set_key(key, event.id) } diff --git a/changelogs/unreleased/bvl-fix-push-event-service-for-forks.yml b/changelogs/unreleased/bvl-fix-push-event-service-for-forks.yml new file mode 100644 index 00000000000..2a7d80270ac --- /dev/null +++ b/changelogs/unreleased/bvl-fix-push-event-service-for-forks.yml @@ -0,0 +1,5 @@ +--- +title: Only cache last push event for existing projects when pushing to a fork +merge_request: 14989 +author: +type: fixed diff --git a/spec/services/users/last_push_event_service_spec.rb b/spec/services/users/last_push_event_service_spec.rb index 956358738fe..2b6c0267a0f 100644 --- a/spec/services/users/last_push_event_service_spec.rb +++ b/spec/services/users/last_push_event_service_spec.rb @@ -22,7 +22,6 @@ describe Users::LastPushEventService do it 'caches the event for the origin project when pushing to a fork' do source = build(:project, id: 5) - allow(project).to receive(:forked?).and_return(true) allow(project).to receive(:forked_from_project).and_return(source) expect(service).to receive(:set_key)