Welcome to mirror list, hosted at ThFree Co, Russian Federation.

unicorn_http_server.rb « mixins « cluster « gitlab « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 440ed02a3557f5986fefab5f9ddfd0dbded59563 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# frozen_string_literal: true

module Gitlab
  module Cluster
    module Mixins
      module UnicornHttpServer
        def self.prepended(base)
          unless base.method_defined?(:reexec) && base.method_defined?(:stop)
            raise 'missing method Unicorn::HttpServer#reexec or Unicorn::HttpServer#stop'
          end
        end

        def reexec
          Gitlab::Cluster::LifecycleEvents.do_before_graceful_shutdown

          super
        end

        # The stop on non-graceful shutdown is executed twice:
        # `#stop(false)` and `#stop`.
        #
        # The first stop will wipe-out all workers, so we need to check
        # the flag and a list of workers
        def stop(graceful = true)
          if graceful && @workers.any? # rubocop:disable Gitlab/ModuleWithInstanceVariables
            Gitlab::Cluster::LifecycleEvents.do_before_graceful_shutdown
          end

          super
        end
      end
    end
  end
end