Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
9763c081
Commit
9763c081
authored
Dec 17, 2019
by
GitLab Bot
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add latest changes from gitlab-org/gitlab@master
parent
7480d774
Changes
48
Show whitespace changes
Inline
Side-by-side
Showing
48 changed files
with
188 additions
and
259 deletions
+188
-259
.eslintrc.yml
.eslintrc.yml
+1
-0
Gemfile.lock
Gemfile.lock
+1
-1
app/services/git/base_hooks_service.rb
app/services/git/base_hooks_service.rb
+1
-1
changelogs/unreleased/22465-rack-attack-authenticate-runner-requests-with-job-token-basic-auth.yml
...uthenticate-runner-requests-with-job-token-basic-auth.yml
+5
-0
changelogs/unreleased/ak-logs-timestamp.yml
changelogs/unreleased/ak-logs-timestamp.yml
+5
-0
changelogs/unreleased/sh-upgrade-rugged.yml
changelogs/unreleased/sh-upgrade-rugged.yml
+5
-0
config/application.rb
config/application.rb
+1
-2
config/environments/development.rb
config/environments/development.rb
+1
-1
config/environments/production.rb
config/environments/production.rb
+1
-1
config/initializers/0_runtime_identify.rb
config/initializers/0_runtime_identify.rb
+0
-13
config/initializers/1_settings.rb
config/initializers/1_settings.rb
+1
-1
config/initializers/7_prometheus_metrics.rb
config/initializers/7_prometheus_metrics.rb
+6
-6
config/initializers/active_record_lifecycle.rb
config/initializers/active_record_lifecycle.rb
+1
-1
config/initializers/cluster_events_before_phased_restart.rb
config/initializers/cluster_events_before_phased_restart.rb
+4
-2
config/initializers/database_config.rb
config/initializers/database_config.rb
+1
-1
config/initializers/lograge.rb
config/initializers/lograge.rb
+1
-1
config/initializers/rack_timeout.rb
config/initializers/rack_timeout.rb
+1
-1
config/initializers/tracing.rb
config/initializers/tracing.rb
+1
-1
config/initializers/validate_puma.rb
config/initializers/validate_puma.rb
+1
-1
lib/gitlab.rb
lib/gitlab.rb
+2
-2
lib/gitlab/auth/auth_finders.rb
lib/gitlab/auth/auth_finders.rb
+14
-0
lib/gitlab/auth/request_authenticator.rb
lib/gitlab/auth/request_authenticator.rb
+2
-1
lib/gitlab/cluster/lifecycle_events.rb
lib/gitlab/cluster/lifecycle_events.rb
+3
-3
lib/gitlab/gitaly_client.rb
lib/gitlab/gitaly_client.rb
+6
-2
lib/gitlab/gpg.rb
lib/gitlab/gpg.rb
+1
-1
lib/gitlab/health_checks/puma_check.rb
lib/gitlab/health_checks/puma_check.rb
+1
-1
lib/gitlab/health_checks/unicorn_check.rb
lib/gitlab/health_checks/unicorn_check.rb
+1
-1
lib/gitlab/highlight.rb
lib/gitlab/highlight.rb
+1
-1
lib/gitlab/metrics/influx_db.rb
lib/gitlab/metrics/influx_db.rb
+1
-1
lib/gitlab/metrics/samplers/influx_sampler.rb
lib/gitlab/metrics/samplers/influx_sampler.rb
+5
-1
lib/gitlab/metrics/samplers/unicorn_sampler.rb
lib/gitlab/metrics/samplers/unicorn_sampler.rb
+1
-1
lib/gitlab/redis/wrapper.rb
lib/gitlab/redis/wrapper.rb
+2
-2
lib/gitlab/runtime.rb
lib/gitlab/runtime.rb
+0
-62
lib/prometheus/pid_provider.rb
lib/prometheus/pid_provider.rb
+3
-3
spec/initializers/database_config_spec.rb
spec/initializers/database_config_spec.rb
+0
-1
spec/lib/gitlab/auth/auth_finders_spec.rb
spec/lib/gitlab/auth/auth_finders_spec.rb
+66
-0
spec/lib/gitlab/database/obsolete_ignored_columns_spec.rb
spec/lib/gitlab/database/obsolete_ignored_columns_spec.rb
+16
-11
spec/lib/gitlab/gitaly_client_spec.rb
spec/lib/gitlab/gitaly_client_spec.rb
+2
-2
spec/lib/gitlab/gpg_spec.rb
spec/lib/gitlab/gpg_spec.rb
+1
-1
spec/lib/gitlab/health_checks/puma_check_spec.rb
spec/lib/gitlab/health_checks/puma_check_spec.rb
+0
-2
spec/lib/gitlab/health_checks/unicorn_check_spec.rb
spec/lib/gitlab/health_checks/unicorn_check_spec.rb
+0
-2
spec/lib/gitlab/highlight_spec.rb
spec/lib/gitlab/highlight_spec.rb
+1
-1
spec/lib/gitlab/metrics/samplers/influx_sampler_spec.rb
spec/lib/gitlab/metrics/samplers/influx_sampler_spec.rb
+2
-2
spec/lib/gitlab/runtime_spec.rb
spec/lib/gitlab/runtime_spec.rb
+0
-112
spec/lib/prometheus/pid_provider_spec.rb
spec/lib/prometheus/pid_provider_spec.rb
+14
-4
spec/services/git/branch_push_service_spec.rb
spec/services/git/branch_push_service_spec.rb
+1
-1
spec/support/helpers/kubernetes_helpers.rb
spec/support/helpers/kubernetes_helpers.rb
+2
-2
spec/support/redis/redis_shared_examples.rb
spec/support/redis/redis_shared_examples.rb
+2
-2
No files found.
.eslintrc.yml
View file @
9763c081
...
...
@@ -46,6 +46,7 @@ rules:
vue/no-v-html
:
off
vue/use-v-on-exact
:
off
no-jquery/no-animate
:
off
# all offenses of no-jquery/no-animate-toggle are false positives ( $toast.show() )
no-jquery/no-animate-toggle
:
off
no-jquery/no-fade
:
off
no-jquery/no-serialize
:
error
...
...
Gemfile.lock
View file @
9763c081
...
...
@@ -930,7 +930,7 @@ GEM
rubyntlm (0.6.2)
rubypants (0.2.0)
rubyzip (1.3.0)
rugged (0.28.
3
.1)
rugged (0.28.
4
.1)
safe_yaml (1.0.4)
sanitize (4.6.6)
crass (~> 1.0.2)
...
...
app/services/git/base_hooks_service.rb
View file @
9763c081
...
...
@@ -163,7 +163,7 @@ module Git
end
def
logger
if
Gitlab
::
Runtime
.
sidekiq
?
if
Sidekiq
.
server
?
Sidekiq
.
logger
else
# This service runs in Sidekiq, so this shouldn't ever be
...
...
changelogs/unreleased/22465-rack-attack-authenticate-runner-requests-with-job-token-basic-auth.yml
0 → 100644
View file @
9763c081
---
title
:
Authenticate requests with job token as basic auth header for request limiting
merge_request
:
21562
author
:
type
:
fixed
changelogs/unreleased/ak-logs-timestamp.yml
0 → 100644
View file @
9763c081
---
title
:
Add timestamps to pod logs
merge_request
:
21663
author
:
type
:
added
changelogs/unreleased/sh-upgrade-rugged.yml
0 → 100644
View file @
9763c081
---
title
:
Update Rugged to v0.28.4.1
merge_request
:
21869
author
:
type
:
security
config/application.rb
View file @
9763c081
...
...
@@ -22,7 +22,6 @@ module Gitlab
require_dependency
Rails
.
root
.
join
(
'lib/gitlab/current_settings'
)
require_dependency
Rails
.
root
.
join
(
'lib/gitlab/middleware/read_only'
)
require_dependency
Rails
.
root
.
join
(
'lib/gitlab/middleware/basic_health_check'
)
require_dependency
Rails
.
root
.
join
(
'lib/gitlab/runtime'
)
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
...
...
@@ -256,7 +255,7 @@ module Gitlab
caching_config_hash
[
:compress
]
=
false
caching_config_hash
[
:namespace
]
=
Gitlab
::
Redis
::
Cache
::
CACHE_NAMESPACE
caching_config_hash
[
:expires_in
]
=
2
.
weeks
# Cache should not grow forever
if
Gitlab
::
Runtime
.
multi_threaded?
if
Sidekiq
.
server?
||
defined?
(
::
Puma
)
# threaded context
caching_config_hash
[
:pool_size
]
=
Gitlab
::
Redis
::
Cache
.
pool_size
caching_config_hash
[
:pool_timeout
]
=
1
end
...
...
config/environments/development.rb
View file @
9763c081
...
...
@@ -46,7 +46,7 @@ Rails.application.configure do
# Do not log asset requests
config
.
assets
.
quiet
=
true
config
.
allow_concurrency
=
Gitlab
::
Runtime
.
multi_threaded?
config
.
allow_concurrency
=
defined?
(
::
Puma
)
# BetterErrors live shell (REPL) on every stack frame
BetterErrors
::
Middleware
.
allow_ip!
(
"127.0.0.1/0"
)
...
...
config/environments/production.rb
View file @
9763c081
...
...
@@ -75,5 +75,5 @@ Rails.application.configure do
config
.
eager_load
=
true
config
.
allow_concurrency
=
Gitlab
::
Runtime
.
multi_threaded?
config
.
allow_concurrency
=
defined?
(
::
Puma
)
end
config/initializers/0_runtime_identify.rb
deleted
100644 → 0
View file @
7480d774
# frozen_string_literal: true
begin
Gitlab
::
AppLogger
.
info
(
"Runtime:
#{
Gitlab
::
Runtime
.
name
}
"
)
rescue
=>
e
message
=
<<-
NOTICE
\n
!! RUNTIME IDENTIFICATION FAILED:
#{
e
}
Runtime based configuration settings may not work properly.
If you continue to see this error, please file an issue via
https://gitlab.com/gitlab-org/gitlab/issues/new
NOTICE
Gitlab
::
AppLogger
.
error
(
message
)
end
config/initializers/1_settings.rb
View file @
9763c081
...
...
@@ -364,7 +364,7 @@ Gitlab.ee do
# To ensure acceptable performance we only allow feature to be used with
# multithreaded web-server Puma. This will be removed once download logic is moved
# to GitLab workhorse
Settings
.
dependency_proxy
[
'enabled'
]
=
false
unless
Gitlab
::
Runtime
.
puma?
Settings
.
dependency_proxy
[
'enabled'
]
=
false
unless
defined?
(
::
Puma
)
end
#
...
...
config/initializers/7_prometheus_metrics.rb
View file @
9763c081
...
...
@@ -4,11 +4,11 @@ require 'prometheus/client'
def
prometheus_default_multiproc_dir
return
unless
Rails
.
env
.
development?
||
Rails
.
env
.
test?
if
Gitlab
::
Runtime
.
sidekiq
?
if
Sidekiq
.
server
?
Rails
.
root
.
join
(
'tmp/prometheus_multiproc_dir/sidekiq'
)
elsif
Gitlab
::
Runtime
.
unicorn?
elsif
defined?
(
Unicorn
::
Worker
)
Rails
.
root
.
join
(
'tmp/prometheus_multiproc_dir/unicorn'
)
elsif
Gitlab
::
Runtime
.
puma?
elsif
defined?
(
::
Puma
)
Rails
.
root
.
join
(
'tmp/prometheus_multiproc_dir/puma'
)
else
Rails
.
root
.
join
(
'tmp/prometheus_multiproc_dir'
)
...
...
@@ -48,9 +48,9 @@ if !Rails.env.test? && Gitlab::Metrics.prometheus_metrics_enabled?
Gitlab
::
Cluster
::
LifecycleEvents
.
on_master_start
do
::
Prometheus
::
Client
.
reinitialize_on_pid_change
(
force:
true
)
if
Gitlab
::
Runtime
.
unicorn?
if
defined?
(
::
Unicorn
)
Gitlab
::
Metrics
::
Samplers
::
UnicornSampler
.
instance
(
Settings
.
monitoring
.
unicorn_sampler_interval
).
start
elsif
Gitlab
::
Runtime
.
puma?
elsif
defined?
(
::
Puma
)
Gitlab
::
Metrics
::
Samplers
::
PumaSampler
.
instance
(
Settings
.
monitoring
.
puma_sampler_interval
).
start
end
...
...
@@ -58,7 +58,7 @@ if !Rails.env.test? && Gitlab::Metrics.prometheus_metrics_enabled?
end
end
if
Gitlab
::
Runtime
.
app_server?
if
defined?
(
::
Unicorn
)
||
defined?
(
::
Puma
)
Gitlab
::
Cluster
::
LifecycleEvents
.
on_master_start
do
Gitlab
::
Metrics
::
Exporter
::
WebExporter
.
instance
.
start
end
...
...
config/initializers/active_record_lifecycle.rb
View file @
9763c081
...
...
@@ -2,7 +2,7 @@
# Don't handle sidekiq configuration as it
# has its own special active record configuration here
if
defined?
(
ActiveRecord
::
Base
)
&&
!
Gitlab
::
Runtime
.
sidekiq
?
if
defined?
(
ActiveRecord
::
Base
)
&&
!
Sidekiq
.
server
?
Gitlab
::
Cluster
::
LifecycleEvents
.
on_worker_start
do
ActiveSupport
.
on_load
(
:active_record
)
do
ActiveRecord
::
Base
.
establish_connection
...
...
config/initializers/cluster_events_before_phased_restart.rb
View file @
9763c081
...
...
@@ -5,8 +5,10 @@
#
# Follow-up the issue: https://gitlab.com/gitlab-org/gitlab/issues/34107
if
Gitlab
::
Runtime
.
puma?
if
defined?
(
::
Puma
)
Puma
::
Cluster
.
prepend
(
::
Gitlab
::
Cluster
::
Mixins
::
PumaCluster
)
elsif
Gitlab
::
Runtime
.
unicorn?
end
if
defined?
(
::
Unicorn
::
HttpServer
)
Unicorn
::
HttpServer
.
prepend
(
::
Gitlab
::
Cluster
::
Mixins
::
UnicornHttpServer
)
end
config/initializers/database_config.rb
View file @
9763c081
...
...
@@ -2,7 +2,7 @@
# when running on puma, scale connection pool size with the number
# of threads per worker process
if
Gitlab
::
Runtime
.
puma?
if
defined?
(
::
Puma
)
db_config
=
Gitlab
::
Database
.
config
||
Rails
.
application
.
config
.
database_configuration
[
Rails
.
env
]
puma_options
=
Puma
.
cli_config
.
options
...
...
config/initializers/lograge.rb
View file @
9763c081
# Only use Lograge for Rails
unless
Gitlab
::
Runtime
.
sidekiq
?
unless
Sidekiq
.
server
?
filename
=
File
.
join
(
Rails
.
root
,
'log'
,
"
#{
Rails
.
env
}
_json.log"
)
Rails
.
application
.
configure
do
...
...
config/initializers/rack_timeout.rb
View file @
9763c081
...
...
@@ -9,7 +9,7 @@
# and it's used only as the last resort. In such case this termination is
# logged and we should fix the potential timeout issue in the code itself.
if
Gitlab
::
Runtime
.
puma?
&&
!
Rails
.
env
.
test?
if
defined?
(
::
Puma
)
&&
!
Rails
.
env
.
test?
require
'rack/timeout/base'
Gitlab
::
Application
.
configure
do
|
config
|
...
...
config/initializers/tracing.rb
View file @
9763c081
...
...
@@ -13,7 +13,7 @@ if Labkit::Tracing.enabled?
end
# Instrument Sidekiq server calls when running Sidekiq server
if
Gitlab
::
Runtime
.
sidekiq
?
if
Sidekiq
.
server
?
Sidekiq
.
configure_server
do
|
config
|
config
.
server_middleware
do
|
chain
|
chain
.
add
Labkit
::
Tracing
::
Sidekiq
::
ServerMiddleware
...
...
config/initializers/validate_puma.rb
View file @
9763c081
# frozen_string_literal: true
if
Gitlab
::
Runtime
.
puma?
&&
::
Puma
.
cli_config
.
options
[
:workers
].
to_i
.
zero?
if
defined?
(
::
Puma
)
&&
::
Puma
.
cli_config
.
options
[
:workers
].
to_i
.
zero?
raise
'Puma is only supported in Cluster-mode: workers > 0'
end
lib/gitlab.rb
View file @
9763c081
...
...
@@ -100,8 +100,8 @@ module Gitlab
end
def
self
.
process_name
return
'sidekiq'
if
Gitlab
::
Runtime
.
sidekiq
?
return
'console'
if
Gitlab
::
Runtime
.
console?
return
'sidekiq'
if
Sidekiq
.
server
?
return
'console'
if
defined?
(
Rails
::
Console
)
return
'test'
if
Rails
.
env
.
test?
'web'
...
...
lib/gitlab/auth/auth_finders.rb
View file @
9763c081
...
...
@@ -21,6 +21,7 @@ module Gitlab
prepend_if_ee
(
'::EE::Gitlab::Auth::AuthFinders'
)
# rubocop: disable Cop/InjectEnterpriseEditionModule
include
Gitlab
::
Utils
::
StrongMemoize
include
ActionController
::
HttpAuthentication
::
Basic
PRIVATE_TOKEN_HEADER
=
'HTTP_PRIVATE_TOKEN'
PRIVATE_TOKEN_PARAM
=
:private_token
...
...
@@ -67,6 +68,19 @@ module Gitlab
job
.
user
end
def
find_user_from_basic_auth_job
return
unless
has_basic_credentials?
(
current_request
)
login
,
password
=
user_name_and_password
(
current_request
)
return
unless
login
.
present?
&&
password
.
present?
return
unless
::
Ci
::
Build
::
CI_REGISTRY_USER
==
login
job
=
::
Ci
::
Build
.
find_by_token
(
password
)
raise
UnauthorizedError
unless
job
job
.
user
end
# We only allow Private Access Tokens with `api` scope to be used by web
# requests on RSS feeds or ICS files for backwards compatibility.
# It is also used by GraphQL/API requests.
...
...
lib/gitlab/auth/request_authenticator.rb
View file @
9763c081
...
...
@@ -32,7 +32,8 @@ module Gitlab
def
find_sessionless_user
(
request_format
)
find_user_from_web_access_token
(
request_format
)
||
find_user_from_feed_token
(
request_format
)
||
find_user_from_static_object_token
(
request_format
)
find_user_from_static_object_token
(
request_format
)
||
find_user_from_basic_auth_job
rescue
Gitlab
::
Auth
::
AuthenticationError
nil
end
...
...
lib/gitlab/cluster/lifecycle_events.rb
View file @
9763c081
...
...
@@ -149,10 +149,10 @@ module Gitlab
def
in_clustered_environment?
# Sidekiq doesn't fork
return
false
if
Gitlab
::
Runtime
.
sidekiq
?
return
false
if
Sidekiq
.
server
?
# Unicorn always forks
return
true
if
Gitlab
::
Runtime
.
unicorn?
return
true
if
defined?
(
::
Unicorn
)
# Puma sometimes forks
return
true
if
in_clustered_puma?
...
...
@@ -162,7 +162,7 @@ module Gitlab
end
def
in_clustered_puma?
return
false
unless
Gitlab
::
Runtime
.
puma?
return
false
unless
defined?
(
::
Puma
)
@puma_options
&&
@puma_options
[
:workers
]
&&
@puma_options
[
:workers
]
>
0
end
...
...
lib/gitlab/gitaly_client.rb
View file @
9763c081
...
...
@@ -29,7 +29,7 @@ module Gitlab
PEM_REGEX
=
/\-+BEGIN CERTIFICATE\-+.+?\-+END CERTIFICATE\-+/m
.
freeze
SERVER_VERSION_FILE
=
'GITALY_SERVER_VERSION'
MAXIMUM_GITALY_CALLS
=
30
CLIENT_NAME
=
(
Gitlab
::
Runtime
.
sidekiq
?
?
'gitlab-sidekiq'
:
'gitlab-web'
).
freeze
CLIENT_NAME
=
(
Sidekiq
.
server
?
?
'gitlab-sidekiq'
:
'gitlab-web'
).
freeze
GITALY_METADATA_FILENAME
=
'.gitaly-metadata'
MUTEX
=
Mutex
.
new
...
...
@@ -382,13 +382,17 @@ module Gitlab
end
def
self
.
long_timeout
if
Gitlab
::
Runtime
.
app_server?
if
web_
app_server?
default_timeout
else
6
.
hours
end
end
def
self
.
web_app_server?
defined?
(
::
Unicorn
)
||
defined?
(
::
Puma
)
end
def
self
.
storage_metadata_file_path
(
storage
)
Gitlab
::
GitalyClient
::
StorageSettings
.
allow_disk_access
do
File
.
join
(
...
...
lib/gitlab/gpg.rb
View file @
9763c081
...
...
@@ -135,7 +135,7 @@ module Gitlab
end
def
cleanup_time
Gitlab
::
Runtime
.
sidekiq
?
?
BG_CLEANUP_RUNTIME_S
:
FG_CLEANUP_RUNTIME_S
Sidekiq
.
server
?
?
BG_CLEANUP_RUNTIME_S
:
FG_CLEANUP_RUNTIME_S
end
def
tmp_keychains_created
...
...
lib/gitlab/health_checks/puma_check.rb
View file @
9763c081
...
...
@@ -18,7 +18,7 @@ module Gitlab
end
def
check
return
unless
Gitlab
::
Runtime
.
puma?
return
unless
defined?
(
::
Puma
)
stats
=
Puma
.
stats
stats
=
JSON
.
parse
(
stats
)
...
...
lib/gitlab/health_checks/unicorn_check.rb
View file @
9763c081
...
...
@@ -30,7 +30,7 @@ module Gitlab
# to change so we can cache the list of servers.
def
http_servers
strong_memoize
(
:http_servers
)
do
next
unless
Gitlab
::
Runtime
.
unicorn?
next
unless
defined?
(
::
Unicorn
::
HttpServer
)
ObjectSpace
.
each_object
(
::
Unicorn
::
HttpServer
).
to_a
end
...
...
lib/gitlab/highlight.rb
View file @
9763c081
...
...
@@ -68,7 +68,7 @@ module Gitlab
end
def
timeout_time
Gitlab
::
Runtime
.
sidekiq
?
?
TIMEOUT_BACKGROUND
:
TIMEOUT_FOREGROUND
Sidekiq
.
server
?
?
TIMEOUT_BACKGROUND
:
TIMEOUT_FOREGROUND
end
def
link_dependencies
(
text
,
highlighted_text
)
...
...
lib/gitlab/metrics/influx_db.rb
View file @
9763c081
...
...
@@ -150,7 +150,7 @@ module Gitlab
# Returns the prefix to use for the name of a series.
def
series_prefix
@series_prefix
||=
Gitlab
::
Runtime
.
sidekiq
?
?
'sidekiq_'
:
'rails_'
@series_prefix
||=
Sidekiq
.
server
?
?
'sidekiq_'
:
'rails_'
end
# Allow access from other metrics related middlewares
...
...
lib/gitlab/metrics/samplers/influx_sampler.rb
View file @
9763c081
...
...
@@ -39,10 +39,14 @@ module Gitlab
end
def
add_metric
(
series
,
values
,
tags
=
{})
prefix
=
Gitlab
::
Runtime
.
sidekiq?
?
'sidekiq_'
:
'rails_'
prefix
=
sidekiq?
?
'sidekiq_'
:
'rails_'
@metrics
<<
Metric
.
new
(
"
#{
prefix
}#{
series
}
"
,
values
,
tags
)
end
def
sidekiq?
Sidekiq
.
server?
end
end
end
end
...
...
lib/gitlab/metrics/samplers/unicorn_sampler.rb
View file @
9763c081
...
...
@@ -61,7 +61,7 @@ module Gitlab
# it takes around 80ms. The instances of HttpServers are not a subject
# to change so we can cache the list of servers.
def
http_servers
return
[]
unless
Gitlab
::
Runtime
.
unicorn?
return
[]
unless
defined?
(
::
Unicorn
::
HttpServer
)
@http_servers
||=
ObjectSpace
.
each_object
(
::
Unicorn
::
HttpServer
).
to_a
end
...
...
lib/gitlab/redis/wrapper.rb
View file @
9763c081
...
...
@@ -22,10 +22,10 @@ module Gitlab
def
pool_size
# heuristic constant 5 should be a config setting somewhere -- related to CPU count?
size
=
5
if
Gitlab
::
Runtime
.
sidekiq
?
if
Sidekiq
.
server
?
# the pool will be used in a multi-threaded context
size
+=
Sidekiq
.
options
[
:concurrency
]
elsif
Gitlab
::
Runtime
.
puma?
elsif
defined?
(
::
Puma
)
size
+=
Puma
.
cli_config
.
options
[
:max_threads
]
end
...
...
lib/gitlab/runtime.rb
deleted
100644 → 0
View file @
7480d774
# frozen_string_literal: true
module
Gitlab
# Provides routines to identify the current runtime as which the application
# executes, such as whether it is an application server and which one.
module
Runtime
class
<<
self
def
name
matches
=
[]
matches
<<
:puma
if
puma?
matches
<<
:unicorn
if
unicorn?
matches
<<
:console
if
console?
matches
<<
:sidekiq
if
sidekiq?
raise
"Ambiguous process match:
#{
matches
}
"
if
matches
.
size
>
1
matches
.
first
||
:unknown
end
def
puma?
!!
(
defined?
(
::
Puma
)
&&
bin
==
'puma'
)
end
# For unicorn, we need to check for actual server instances to avoid false positives.
def
unicorn?
!!
(
defined?
(
::
Unicorn
)
&&
defined?
(
::
Unicorn
::
HttpServer
))
end
def
sidekiq?
!!
(
defined?
(
::
Sidekiq
)
&&
Sidekiq
.
server?
&&
bin
==
'sidekiq'
)
end
def
console?
!!
defined?
(
::
Rails
::
Console
)
end
def
app_server?
puma?
||
unicorn?
end
def
multi_threaded?
puma?
||
sidekiq?
end
private
# Some example values from my system:
# puma: /data/cache/bundle-2.5/bin/puma
# unicorn: unicorn_rails master -E development -c /tmp/unicorn.rb -l 0.0.0.0:8080
# sidekiq: /data/cache/bundle-2.5/bin/sidekiq
# thin: bin/rails
# console: bin/rails
def
script_name
$0
end
def
bin
File
.
basename
(
script_name
)
end
end
end
end
lib/prometheus/pid_provider.rb
View file @
9763c081
...
...
@@ -5,11 +5,11 @@ module Prometheus
extend
self
def
worker_id
if
Gitlab
::
Runtime
.
sidekiq
?
if
Sidekiq
.
server
?
sidekiq_worker_id
elsif
Gitlab
::
Runtime
.
unicorn?
elsif
defined?
(
Unicorn
::
Worker
)
unicorn_worker_id
elsif
Gitlab
::
Runtime
.
puma?
elsif
defined?
(
::
Puma
)
puma_worker_id
else
unknown_process_id
...
...
spec/initializers/database_config_spec.rb
View file @
9763c081
...
...
@@ -16,7 +16,6 @@ describe 'Database config initializer' do
let
(
:puma_options
)
{
{
max_threads:
8
}
}
before
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:puma?
).
and_return
(
true
)
stub_const
(
"Puma"
,
puma
)
allow
(
puma
).
to
receive_message_chain
(
:cli_config
,
:options
).
and_return
(
puma_options
)
end
...
...
spec/lib/gitlab/auth/auth_finders_spec.rb
View file @
9763c081
...
...
@@ -335,6 +335,72 @@ describe Gitlab::Auth::AuthFinders do
end
end
describe
'#find_user_from_basic_auth_job'
do
def
basic_http_auth
(
username
,
password
)
ActionController
::
HttpAuthentication
::
Basic
.
encode_credentials
(
username
,
password
)
end
def
set_auth
(
username
,
password
)
env
[
'HTTP_AUTHORIZATION'
]
=
basic_http_auth
(
username
,
password
)
end
subject
{
find_user_from_basic_auth_job
}
context
'when the request does not have AUTHORIZATION header'
do
it
{
is_expected
.
to
be_nil
}
end
context
'with wrong credentials'
do
it
'returns nil without user and password'
do
set_auth
(
nil
,
nil
)
is_expected
.
to
be_nil
end
it
'returns nil without password'
do
set_auth
(
'some-user'
,
nil
)
is_expected
.
to
be_nil
end
it
'returns nil without user'
do
set_auth
(
nil
,
'password'
)
is_expected
.
to
be_nil
end
it
'returns nil without CI username'
do
set_auth
(
'user'
,
'password'
)
is_expected
.
to
be_nil
end
end
context
'with CI username'
do
let
(
:username
)
{
::
Ci
::
Build
::
CI_REGISTRY_USER
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:build
)
{
create
(
:ci_build
,
user:
user
)
}
it
'returns nil without password'
do
set_auth
(
username
,
nil
)
is_expected
.
to
be_nil
end
it
'returns user with valid token'
do
set_auth
(
username
,
build
.
token
)
is_expected
.
to
eq
user
end
it
'raises error with invalid token'
do
set_auth
(
username
,
'token'
)
expect
{
subject
}.
to
raise_error
(
Gitlab
::
Auth
::
UnauthorizedError
)
end
end
end
describe
'#validate_access_token!'
do
let
(
:personal_access_token
)
{
create
(
:personal_access_token
,
user:
user
)
}
...
...
spec/lib/gitlab/database/obsolete_ignored_columns_spec.rb
View file @
9763c081
...
...
@@ -4,6 +4,9 @@ require 'spec_helper'
describe
Gitlab
::
Database
::
ObsoleteIgnoredColumns
do
module
Testing
# Used a fixed date to prevent tests failing across date boundaries
REMOVE_DATE
=
Date
.
new
(
2019
,
12
,
16
)
class
MyBase
<
ApplicationRecord
end
...
...
@@ -23,12 +26,12 @@ describe Gitlab::Database::ObsoleteIgnoredColumns do
self
.
table_name
=
'issues'
ignore_column
:id
,
:other
,
remove_after:
'2019-01-01'
,
remove_with:
'12.0'
ignore_column
:not_used_but_still_ignored
,
remove_after:
Date
.
today
.
to_s
,
remove_with:
'12.1'
ignore_column
:not_used_but_still_ignored
,
remove_after:
REMOVE_DATE
.
to_s
,
remove_with:
'12.1'
end
class
A
<
SomeAbstract
ignore_column
:also_unused
,
remove_after:
'2019-02-01'
,
remove_with:
'12.1'
ignore_column
:not_used_but_still_ignored
,
remove_after:
Date
.
today
.
to_s
,
remove_with:
'12.1'
ignore_column
:not_used_but_still_ignored
,
remove_after:
REMOVE_DATE
.
to_s
,
remove_with:
'12.1'
end
class
C
<
MyBase
...
...
@@ -40,6 +43,7 @@ describe Gitlab::Database::ObsoleteIgnoredColumns do
describe
'#execute'
do
it
'returns a list of class names and columns pairs'
do
Timecop
.
freeze
(
Testing
::
REMOVE_DATE
)
do
expect
(
subject
.
execute
).
to
eq
([
[
'Testing::A'
,
{
'unused'
=>
IgnorableColumns
::
ColumnIgnore
.
new
(
Date
.
parse
(
'2019-01-01'
),
'12.0'
),
...
...
@@ -51,4 +55,5 @@ describe Gitlab::Database::ObsoleteIgnoredColumns do
])
end
end
end
end
spec/lib/gitlab/gitaly_client_spec.rb
View file @
9763c081
...
...
@@ -26,7 +26,7 @@ describe Gitlab::GitalyClient do
context
'running in Unicorn'
do
before
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:unicorn?
).
and_return
(
true
)
stub_const
(
'Unicorn'
,
1
)
end
it
{
expect
(
subject
.
long_timeout
).
to
eq
(
55
)
}
...
...
@@ -34,7 +34,7 @@ describe Gitlab::GitalyClient do
context
'running in Puma'
do
before
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:puma?
).
and_return
(
true
)
stub_const
(
'Puma'
,
1
)
end
it
{
expect
(
subject
.
long_timeout
).
to
eq
(
55
)
}
...
...
spec/lib/gitlab/gpg_spec.rb
View file @
9763c081
...
...
@@ -236,7 +236,7 @@ describe Gitlab::Gpg do
context
'when running in Sidekiq'
do
before
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:sidekiq
?
).
and_return
(
true
)
allow
(
Sidekiq
).
to
receive
(
:server
?
).
and_return
(
true
)
end
it_behaves_like
'multiple deletion attempts of the tmp-dir'
,
described_class
::
BG_CLEANUP_RUNTIME_S
...
...
spec/lib/gitlab/health_checks/puma_check_spec.rb
View file @
9763c081
...
...
@@ -22,7 +22,6 @@ describe Gitlab::HealthChecks::PumaCheck do
context
'when Puma is not loaded'
do
before
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:puma?
).
and_return
(
false
)
hide_const
(
'Puma'
)
end
...
...
@@ -34,7 +33,6 @@ describe Gitlab::HealthChecks::PumaCheck do
context
'when Puma is loaded'
do
before
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:puma?
).
and_return
(
true
)
stub_const
(
'Puma'
,
Module
.
new
)
end
...
...
spec/lib/gitlab/health_checks/unicorn_check_spec.rb
View file @
9763c081
...
...
@@ -26,7 +26,6 @@ describe Gitlab::HealthChecks::UnicornCheck do
context
'when Unicorn is not loaded'
do
before
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:unicorn?
).
and_return
(
false
)
hide_const
(
'Unicorn'
)
end
...
...
@@ -40,7 +39,6 @@ describe Gitlab::HealthChecks::UnicornCheck do
let
(
:http_server_class
)
{
Struct
.
new
(
:worker_processes
)
}
before
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:unicorn?
).
and_return
(
true
)
stub_const
(
'Unicorn::HttpServer'
,
http_server_class
)
end
...
...
spec/lib/gitlab/highlight_spec.rb
View file @
9763c081
...
...
@@ -111,7 +111,7 @@ describe Gitlab::Highlight do
end
it
'utilizes longer timeout for sidekiq'
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:sidekiq
?
).
and_return
(
true
)
allow
(
Sidekiq
).
to
receive
(
:server
?
).
and_return
(
true
)
expect
(
Timeout
).
to
receive
(
:timeout
).
with
(
described_class
::
TIMEOUT_BACKGROUND
).
and_call_original
subject
.
highlight
(
"Content"
)
...
...
spec/lib/gitlab/metrics/samplers/influx_sampler_spec.rb
View file @
9763c081
...
...
@@ -63,7 +63,7 @@ describe Gitlab::Metrics::Samplers::InfluxSampler do
describe
'#add_metric'
do
it
'prefixes the series name for a Rails process'
do
expect
(
Gitlab
::
Runtime
).
to
receive
(
:sidekiq?
).
and_return
(
false
)
expect
(
sampler
).
to
receive
(
:sidekiq?
).
and_return
(
false
)
expect
(
Gitlab
::
Metrics
::
Metric
).
to
receive
(
:new
)
.
with
(
'rails_cats'
,
{
value:
10
},
{})
...
...
@@ -73,7 +73,7 @@ describe Gitlab::Metrics::Samplers::InfluxSampler do
end
it
'prefixes the series name for a Sidekiq process'
do
expect
(
Gitlab
::
Runtime
).
to
receive
(
:sidekiq?
).
and_return
(
true
)
expect
(
sampler
).
to
receive
(
:sidekiq?
).
and_return
(
true
)
expect
(
Gitlab
::
Metrics
::
Metric
).
to
receive
(
:new
)
.
with
(
'sidekiq_cats'
,
{
value:
10
},
{})
...
...
spec/lib/gitlab/runtime_spec.rb
deleted
100644 → 0
View file @
7480d774
# frozen_string_literal: true
require
'spec_helper'
describe
Gitlab
::
Runtime
do
REAL_PATH
=
$0
after
(
:all
)
do
$0
=
REAL_PATH
end
context
"when unknown"
do
it
"identifies as :unknown"
do
expect
(
subject
.
name
).
to
eq
(
:unknown
)
end
end
context
"on multiple matches"
do
before
do
$0
=
'/data/cache/bundle-2.5/bin/puma'
stub_const
(
'::Puma'
,
double
)
stub_const
(
'::Rails::Console'
,
double
)
end
it
"raises an exception when trying to identify"
do
expect
{
subject
.
name
}.
to
raise_error
(
RuntimeError
,
"Ambiguous process match: [:puma, :console]"
)
end
end
context
"puma"
do
let
(
:puma_type
)
{
double
(
'::Puma'
)
}
before
do
$0
=
'/data/cache/bundle-2.5/bin/puma'
stub_const
(
'::Puma'
,
puma_type
)
end
it
"identifies itself"
do
expect
(
subject
.
name
).
to
eq
(
:puma
)
expect
(
subject
.
puma?
).
to
be
(
true
)
end
it
"does not identify as others"
do
expect
(
subject
.
unicorn?
).
to
be
(
false
)
expect
(
subject
.
sidekiq?
).
to
be
(
false
)
expect
(
subject
.
console?
).
to
be
(
false
)
end
end
context
"unicorn"
do
let
(
:unicorn_type
)
{
Module
.
new
}
let
(
:unicorn_server_type
)
{
Class
.
new
}
before
do
$0
=
'unicorn_rails master -E development -c /tmp/unicorn.rb -l 0.0.0.0:8080'
stub_const
(
'::Unicorn'
,
unicorn_type
)
stub_const
(
'::Unicorn::HttpServer'
,
unicorn_server_type
)
end
it
"identifies itself"
do
expect
(
subject
.
name
).
to
eq
(
:unicorn
)
expect
(
subject
.
unicorn?
).
to
be
(
true
)
end
it
"does not identify as others"
do
expect
(
subject
.
puma?
).
to
be
(
false
)
expect
(
subject
.
sidekiq?
).
to
be
(
false
)
expect
(
subject
.
console?
).
to
be
(
false
)
end
end
context
"sidekiq"
do
let
(
:sidekiq_type
)
{
double
(
'::Sidekiq'
)
}
before
do
$0
=
'/data/cache/bundle-2.5/bin/sidekiq'
stub_const
(
'::Sidekiq'
,
sidekiq_type
)
allow
(
sidekiq_type
).
to
receive
(
:server?
).
and_return
(
true
)
end
it
"identifies itself"
do
expect
(
subject
.
name
).
to
eq
(
:sidekiq
)
expect
(
subject
.
sidekiq?
).
to
be
(
true
)
end
it
"does not identify as others"
do
expect
(
subject
.
unicorn?
).
to
be
(
false
)
expect
(
subject
.
puma?
).
to
be
(
false
)
expect
(
subject
.
console?
).
to
be
(
false
)
end
end
context
"console"
do
let
(
:console_type
)
{
double
(
'::Rails::Console'
)
}
before
do
$0
=
'bin/rails'
stub_const
(
'::Rails::Console'
,
console_type
)
end
it
"identifies itself"
do
expect
(
subject
.
name
).
to
eq
(
:console
)
expect
(
subject
.
console?
).
to
be
(
true
)
end
it
"does not identify as others"
do
expect
(
subject
.
unicorn?
).
to
be
(
false
)
expect
(
subject
.
sidekiq?
).
to
be
(
false
)
expect
(
subject
.
puma?
).
to
be
(
false
)
end
end
end
spec/lib/prometheus/pid_provider_spec.rb
View file @
9763c081
...
...
@@ -6,13 +6,16 @@ describe Prometheus::PidProvider do
describe
'.worker_id'
do
subject
{
described_class
.
worker_id
}
let
(
:sidekiq_module
)
{
Module
.
new
}
before
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:sidekiq?
).
and_return
(
false
)
allow
(
sidekiq_module
).
to
receive
(
:server?
).
and_return
(
false
)
stub_const
(
'Sidekiq'
,
sidekiq_module
)
end
context
'when running in Sidekiq server mode'
do
before
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:sidekiq
?
).
and_return
(
true
)
expect
(
Sidekiq
).
to
receive
(
:server
?
).
and_return
(
true
)
end
context
'in a clustered setup'
do
...
...
@@ -30,7 +33,8 @@ describe Prometheus::PidProvider do
context
'when running in Unicorn mode'
do
before
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:unicorn?
).
and_return
(
true
)
stub_const
(
'Unicorn::Worker'
,
Class
.
new
)
hide_const
(
'Puma'
)
expect
(
described_class
).
to
receive
(
:process_name
)
.
at_least
(
:once
)
...
...
@@ -90,7 +94,8 @@ describe Prometheus::PidProvider do
context
'when running in Puma mode'
do
before
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:puma?
).
and_return
(
true
)
stub_const
(
'Puma'
,
Module
.
new
)
hide_const
(
'Unicorn::Worker'
)
expect
(
described_class
).
to
receive
(
:process_name
)
.
at_least
(
:once
)
...
...
@@ -111,6 +116,11 @@ describe Prometheus::PidProvider do
end
context
'when running in unknown mode'
do
before
do
hide_const
(
'Puma'
)
hide_const
(
'Unicorn::Worker'
)
end
it
{
is_expected
.
to
eq
"process_
#{
Process
.
pid
}
"
}
end
end
...
...
spec/services/git/branch_push_service_spec.rb
View file @
9763c081
...
...
@@ -108,7 +108,7 @@ describe Git::BranchPushService, services: true do
end
it
'reports an error'
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:sidekiq
?
).
and_return
(
true
)
allow
(
Sidekiq
).
to
receive
(
:server
?
).
and_return
(
true
)
expect
(
Sidekiq
.
logger
).
to
receive
(
:warn
)
expect
{
subject
}.
not_to
change
{
Ci
::
Pipeline
.
count
}
...
...
spec/support/helpers/kubernetes_helpers.rb
View file @
9763c081
...
...
@@ -84,7 +84,7 @@ module KubernetesHelpers
end
logs_url
=
service
.
api_url
+
"/api/v1/namespaces/
#{
namespace
}
/pods/
#{
pod_name
}
"
\
"/log?
#{
container_query_param
}
tailLines=
#{
Clusters
::
Platforms
::
Kubernetes
::
LOGS_LIMIT
}
"
"/log?
#{
container_query_param
}
tailLines=
#{
Clusters
::
Platforms
::
Kubernetes
::
LOGS_LIMIT
}
×tamps=true
"
if
status
response
=
{
status:
status
}
...
...
@@ -331,7 +331,7 @@ module KubernetesHelpers
end
def
kube_logs_body
"
Log 1
\n
Log 2
\n
Log 3"
"
2019-12-13T14:04:22.123456Z Log 1
\n
2019-12-13T14:04:23.123456Z Log 2
\n
2019-12-13T14:04:24.123456Z
Log 3"
end
def
kube_deployments_body
...
...
spec/support/redis/redis_shared_examples.rb
View file @
9763c081
...
...
@@ -118,7 +118,7 @@ RSpec.shared_examples "redis_shared_examples" do
context
'when running not on sidekiq workers'
do
before
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:sidekiq
?
).
and_return
(
false
)
allow
(
Sidekiq
).
to
receive
(
:server
?
).
and_return
(
false
)
end
it
'instantiates a connection pool with size 5'
do
...
...
@@ -130,7 +130,7 @@ RSpec.shared_examples "redis_shared_examples" do
context
'when running on sidekiq workers'
do
before
do
allow
(
Gitlab
::
Runtime
).
to
receive
(
:sidekiq
?
).
and_return
(
true
)
allow
(
Sidekiq
).
to
receive
(
:server
?
).
and_return
(
true
)
allow
(
Sidekiq
).
to
receive
(
:options
).
and_return
({
concurrency:
18
})
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment