From 3265ac4f39e6760340722c524113ac1691fdcf8d Mon Sep 17 00:00:00 2001
From: Pawel Chojnacki <pawel@chojnacki.ws>
Date: Thu, 27 Jul 2017 14:27:15 +0200
Subject: [PATCH] Update prometheus client gem to fix problems with PID
 handling following unicorn forking new workers.

---
 Gemfile                                                       | 2 +-
 Gemfile.lock                                                  | 4 ++--
 .../unreleased/pawel-prometheus_client_pid_reuse_error.yml    | 4 ++++
 config/unicorn.rb.example                                     | 4 ++++
 4 files changed, 11 insertions(+), 3 deletions(-)
 create mode 100644 changelogs/unreleased/pawel-prometheus_client_pid_reuse_error.yml

diff --git a/Gemfile b/Gemfile
index 43109de1b45..a2343f81929 100644
--- a/Gemfile
+++ b/Gemfile
@@ -286,7 +286,7 @@ group :metrics do
   gem 'influxdb', '~> 0.2', require: false
 
   # Prometheus
-  gem 'prometheus-client-mmap', '~>0.7.0.beta9'
+  gem 'prometheus-client-mmap', '~>0.7.0.beta11'
   gem 'raindrops', '~> 0.18'
 end
 
diff --git a/Gemfile.lock b/Gemfile.lock
index 6c2ac9368f2..031741437e3 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -595,7 +595,7 @@ GEM
     premailer-rails (1.9.7)
       actionmailer (>= 3, < 6)
       premailer (~> 1.7, >= 1.7.9)
-    prometheus-client-mmap (0.7.0.beta10)
+    prometheus-client-mmap (0.7.0.beta11)
       mmap2 (~> 2.2, >= 2.2.7)
     pry (0.10.4)
       coderay (~> 1.1.0)
@@ -1047,7 +1047,7 @@ DEPENDENCIES
   pg (~> 0.18.2)
   poltergeist (~> 1.9.0)
   premailer-rails (~> 1.9.7)
-  prometheus-client-mmap (~> 0.7.0.beta9)
+  prometheus-client-mmap (~> 0.7.0.beta11)
   pry-byebug (~> 3.4.1)
   pry-rails (~> 0.3.4)
   rack-attack (~> 4.4.1)
diff --git a/changelogs/unreleased/pawel-prometheus_client_pid_reuse_error.yml b/changelogs/unreleased/pawel-prometheus_client_pid_reuse_error.yml
new file mode 100644
index 00000000000..dfff4c23308
--- /dev/null
+++ b/changelogs/unreleased/pawel-prometheus_client_pid_reuse_error.yml
@@ -0,0 +1,4 @@
+---
+title: Fix Prometheus client PID reuse bug
+merge_request: 13130
+author:
diff --git a/config/unicorn.rb.example b/config/unicorn.rb.example
index 40a16a32359..cc10da2bd88 100644
--- a/config/unicorn.rb.example
+++ b/config/unicorn.rb.example
@@ -121,6 +121,10 @@ after_fork do |server, worker|
   defined?(ActiveRecord::Base) and
     ActiveRecord::Base.establish_connection
 
+  # reset prometheus client, this will cause any opened metrics files to be closed
+  defined?(::Prometheus::Client.reinitialize_on_pid_change) &&
+    Prometheus::Client.reinitialize_on_pid_change
+
   # if preload_app is true, then you may also want to check and
   # restart any other shared sockets/descriptors such as Memcached,
   # and Redis.  TokyoCabinet file handles are safe to reuse
-- 
GitLab