Merge branch '52780-stale-pipeline-status-cache-for-_project-after-disabling-pipelines' into 'master'
Resolve "Stale pipeline status cache for `_project` after disabling pipelines" Closes #52780 See merge request gitlab-org/gitlab-ce!22589
This commit is contained in:
commit
5a460397a1
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Cache pipeline status per SHA.
|
||||
merge_request: 22589
|
||||
author:
|
||||
type: fixed
|
|
@ -42,7 +42,7 @@ module Gitlab
|
|||
end
|
||||
|
||||
def self.cache_key_for_project(project)
|
||||
"#{Gitlab::Redis::Cache::CACHE_NAMESPACE}:projects/#{project.id}/pipeline_status"
|
||||
"#{Gitlab::Redis::Cache::CACHE_NAMESPACE}:projects/#{project.id}/pipeline_status/#{project.commit&.sha}"
|
||||
end
|
||||
|
||||
def self.update_for_pipeline(pipeline)
|
||||
|
@ -84,9 +84,7 @@ module Gitlab
|
|||
def load_from_project
|
||||
return unless commit
|
||||
|
||||
self.sha = commit.sha
|
||||
self.status = commit.status
|
||||
self.ref = project.default_branch
|
||||
self.sha, self.status, self.ref = commit.sha, commit.status, project.default_branch
|
||||
end
|
||||
|
||||
# We only cache the status for the HEAD commit of a project
|
||||
|
@ -104,6 +102,8 @@ module Gitlab
|
|||
def load_from_cache
|
||||
Gitlab::Redis::Cache.with do |redis|
|
||||
self.sha, self.status, self.ref = redis.hmget(cache_key, :sha, :status, :ref)
|
||||
|
||||
self.status = nil if self.status.empty?
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -282,6 +282,21 @@ describe Gitlab::Cache::Ci::ProjectPipelineStatus, :clean_gitlab_redis_cache do
|
|||
expect(pipeline_status.status).to eq(status)
|
||||
expect(pipeline_status.ref).to eq(ref)
|
||||
end
|
||||
|
||||
context 'when status is empty string' do
|
||||
before do
|
||||
Gitlab::Redis::Cache.with do |redis|
|
||||
redis.mapped_hmset(cache_key,
|
||||
{ sha: sha, status: '', ref: ref })
|
||||
end
|
||||
end
|
||||
|
||||
it 'reads the status as nil' do
|
||||
pipeline_status.load_from_cache
|
||||
|
||||
expect(pipeline_status.status).to eq(nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#has_cache?' do
|
||||
|
|
Loading…
Reference in New Issue