Add EE-only initializers
These files are only used by EE, and are now wrapped in `Gitlab.ee` blocks for file parity.
This commit is contained in:
parent
b77d94aab5
commit
9f677359a7
5 changed files with 123 additions and 0 deletions
19
config/initializers/0_license.rb
Normal file
19
config/initializers/0_license.rb
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
require_dependency 'lib/gitlab'
|
||||||
|
|
||||||
|
Gitlab.ee do
|
||||||
|
begin
|
||||||
|
public_key_file = File.read(Rails.root.join(".license_encryption_key.pub"))
|
||||||
|
public_key = OpenSSL::PKey::RSA.new(public_key_file)
|
||||||
|
Gitlab::License.encryption_key = public_key
|
||||||
|
rescue
|
||||||
|
warn "WARNING: No valid license encryption key provided."
|
||||||
|
end
|
||||||
|
|
||||||
|
# Needed to run migration
|
||||||
|
if ActiveRecord::Base.connected? && ActiveRecord::Base.connection.data_source_exists?('licenses')
|
||||||
|
message = LicenseHelper.license_message(signed_in: true, is_admin: true, in_html: false)
|
||||||
|
if ::License.block_changes? && message.present?
|
||||||
|
warn "WARNING: #{message}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
48
config/initializers/elastic_client_setup.rb
Normal file
48
config/initializers/elastic_client_setup.rb
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
# Be sure to restart your server when you modify this file.
|
||||||
|
|
||||||
|
require 'gitlab/current_settings'
|
||||||
|
|
||||||
|
Gitlab.ee do
|
||||||
|
Elasticsearch::Model::Response::Records.prepend GemExtensions::Elasticsearch::Model::Response::Records
|
||||||
|
Elasticsearch::Model::Adapter::Multiple::Records.prepend GemExtensions::Elasticsearch::Model::Adapter::Multiple::Records
|
||||||
|
Elasticsearch::Model::Indexing::InstanceMethods.prepend GemExtensions::Elasticsearch::Model::Indexing::InstanceMethods
|
||||||
|
|
||||||
|
module Elasticsearch
|
||||||
|
module Model
|
||||||
|
module Client
|
||||||
|
# This mutex is only used to synchronize *creation* of a new client, so
|
||||||
|
# all including classes can share the same client instance
|
||||||
|
CLIENT_MUTEX = Mutex.new
|
||||||
|
|
||||||
|
cattr_accessor :cached_client
|
||||||
|
cattr_accessor :cached_config
|
||||||
|
|
||||||
|
module ClassMethods
|
||||||
|
# Override the default ::Elasticsearch::Model::Client implementation to
|
||||||
|
# return a client configured from application settings. All including
|
||||||
|
# classes will use the same instance, which is refreshed automatically
|
||||||
|
# if the settings change.
|
||||||
|
#
|
||||||
|
# _client is present to match the arity of the overridden method, where
|
||||||
|
# it is also not used.
|
||||||
|
#
|
||||||
|
# @return [Elasticsearch::Transport::Client]
|
||||||
|
def client(_client = nil)
|
||||||
|
store = ::Elasticsearch::Model::Client
|
||||||
|
|
||||||
|
store::CLIENT_MUTEX.synchronize do
|
||||||
|
config = Gitlab::CurrentSettings.elasticsearch_config
|
||||||
|
|
||||||
|
if store.cached_client.nil? || config != store.cached_config
|
||||||
|
store.cached_client = ::Gitlab::Elastic::Client.build(config)
|
||||||
|
store.cached_config = config
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
store.cached_client
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
15
config/initializers/geo.rb
Normal file
15
config/initializers/geo.rb
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
Gitlab.ee do
|
||||||
|
if File.exist?(Rails.root.join('config/database_geo.yml'))
|
||||||
|
Rails.application.configure do
|
||||||
|
config.geo_database = config_for(:database_geo)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
begin
|
||||||
|
if Gitlab::Geo.connected? && Gitlab::Geo.primary?
|
||||||
|
Gitlab::Geo.current_node&.update_clone_url!
|
||||||
|
end
|
||||||
|
rescue => e
|
||||||
|
warn "WARNING: Unable to check/update clone_url_prefix for Geo: #{e}"
|
||||||
|
end
|
||||||
|
end
|
23
config/initializers/load_balancing.rb
Normal file
23
config/initializers/load_balancing.rb
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# We need to run this initializer after migrations are done so it doesn't fail on CI
|
||||||
|
|
||||||
|
Gitlab.ee do
|
||||||
|
if ActiveRecord::Base.connected? && ActiveRecord::Base.connection.data_source_exists?('licenses')
|
||||||
|
if Gitlab::Database::LoadBalancing.enable?
|
||||||
|
Gitlab::Database.disable_prepared_statements
|
||||||
|
|
||||||
|
Gitlab::Application.configure do |config|
|
||||||
|
config.middleware.use(Gitlab::Database::LoadBalancing::RackMiddleware)
|
||||||
|
end
|
||||||
|
|
||||||
|
Gitlab::Database::LoadBalancing.configure_proxy
|
||||||
|
|
||||||
|
# This needs to be executed after fork of clustered processes
|
||||||
|
Gitlab::Cluster::LifecycleEvents.on_worker_start do
|
||||||
|
# Service discovery must be started after configuring the proxy, as service
|
||||||
|
# discovery depends on this.
|
||||||
|
Gitlab::Database::LoadBalancing.start_service_discovery
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
18
config/initializers/sidekiq_cluster.rb
Normal file
18
config/initializers/sidekiq_cluster.rb
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
if ENV['ENABLE_SIDEKIQ_CLUSTER'] && Gitlab.ee?
|
||||||
|
Thread.new do
|
||||||
|
Thread.current.abort_on_exception = true
|
||||||
|
|
||||||
|
parent = Process.ppid
|
||||||
|
|
||||||
|
loop do
|
||||||
|
sleep(5)
|
||||||
|
|
||||||
|
# In cluster mode it's possible that the master process is SIGKILL'd. In
|
||||||
|
# this case the parent PID changes and we need to terminate ourselves.
|
||||||
|
if Process.ppid != parent
|
||||||
|
Process.kill(:TERM, Process.pid)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue