summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2017-12-25 05:33:32 -0800
committerStan Hu <stanhu@gmail.com>2017-12-25 05:33:32 -0800
commitb6c711fd38f65d78bbd02ad9ad05f22bcb5033c5 (patch)
treeb187cef0f1aad1341f8a52fe66c6b6fe6156bef7
parenta83c41f6c6e0035c40916b3cbdda7fdd4f7e925f (diff)
downloadgitlab-ce-sh-handle-anonymous-clones-project-moved.tar.gz
Disable redirect messages for anonymous clonessh-handle-anonymous-clones-project-moved
-rw-r--r--lib/gitlab/checks/project_moved.rb17
-rw-r--r--spec/lib/gitlab/checks/project_moved_spec.rb3
2 files changed, 8 insertions, 12 deletions
diff --git a/lib/gitlab/checks/project_moved.rb b/lib/gitlab/checks/project_moved.rb
index c1da2471b54..dfb2f4d4054 100644
--- a/lib/gitlab/checks/project_moved.rb
+++ b/lib/gitlab/checks/project_moved.rb
@@ -2,7 +2,6 @@ module Gitlab
module Checks
class ProjectMoved
REDIRECT_NAMESPACE = "redirect_namespace".freeze
- ANONYMOUS_ID_KEY = 'anonymous'.freeze
def initialize(project, user, redirected_path, protocol)
@project = project
@@ -22,8 +21,12 @@ module Gitlab
end
def add_redirect_message
+ # Don't bother with sending a redirect message for anonymous clones
+ # because they never see it via the `/internal/post_receive` endpoint
+ return unless user.present? && project.present?
+
Gitlab::Redis::SharedState.with do |redis|
- key = self.class.redirect_message_key(user_identifier, project.id)
+ key = self.class.redirect_message_key(user.id, project.id)
redis.setex(key, 5.minutes, redirect_message)
end
end
@@ -46,14 +49,8 @@ module Gitlab
attr_reader :project, :redirected_path, :protocol, :user
- def self.redirect_message_key(user_identifier, project_id)
- "#{REDIRECT_NAMESPACE}:#{user_identifier}:#{project_id}"
- end
-
- def user_identifier
- return ANONYMOUS_ID_KEY unless user.present?
-
- user.id
+ def self.redirect_message_key(user_id, project_id)
+ "#{REDIRECT_NAMESPACE}:#{user_id}:#{project_id}"
end
def remote_url_message(rejected)
diff --git a/spec/lib/gitlab/checks/project_moved_spec.rb b/spec/lib/gitlab/checks/project_moved_spec.rb
index 3d72e78332d..f90c2d6aded 100644
--- a/spec/lib/gitlab/checks/project_moved_spec.rb
+++ b/spec/lib/gitlab/checks/project_moved_spec.rb
@@ -39,8 +39,7 @@ describe Gitlab::Checks::ProjectMoved, :clean_gitlab_redis_shared_state do
it 'should handle anonymous clones' do
project_moved = described_class.new(project, nil, 'foo/bar', 'http')
- expect(project_moved.add_redirect_message).to eq("OK")
- expect(Gitlab::Redis::SharedState.with { |redis| redis.get("redirect_namespace:anonymous:#{project.id}") }).not_to be_nil
+ expect(project_moved.add_redirect_message).to eq(nil)
end
end