unicorn_wrangler 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 19c14c7fa55054a95ced0309e7572bd3917d518bd9906a7775adee3423d82b79
4
- data.tar.gz: 0326a1740dd4a9b76ba21cd8e4bd45e11aed7a9109eb7a837948f70736104bed
3
+ metadata.gz: 3a3a8ecfbd1a4bb724bda20436ca8047d427e4aafcd69b066cb8dd151853e07b
4
+ data.tar.gz: aa7c119ec19b8580476b828227f20bb002045524e4c316fbd154495fa740511f
5
5
  SHA512:
6
- metadata.gz: d6669d17513fc1eebcf1e7721bf331ce38c37ac145b2f66ea4622df50a1823673ce88bdd8092024d60caf88c543faea48a133a2dda108da60b5fb5094d7218a6
7
- data.tar.gz: c5b1211ac5758cf840a7a63628095be835b5c409b1ce7660e1b5c399a65b6a58db342c01ac91c6a7cb8dc270d94a1c401921928bbe30765626fbc36216e36fcc
6
+ metadata.gz: 60429f9e58f17cac7ca81566a2427100d75e4e2a8b7e88dbe1304829b783e174e3308eb14248d594576944eab16e94ddbed88a3799e8b5c28c52b024de81d1c0
7
+ data.tar.gz: 57b724a224098c48f7ef71d7d0f7e41ffb8e9a000442b44a456b588ea11c2fe0234cfca68ac85ba0873380192179066df08631f2b910e7cd1462d7dcdaa05fdc
@@ -9,6 +9,7 @@ module UnicornWrangler
9
9
 
10
10
  class << self
11
11
  attr_reader :handlers
12
+ attr_accessor :sending_myself_term
12
13
 
13
14
  # called from unicorn config (usually config/unicorn.rb)
14
15
  # high level interface to keep setup consistent / simple
@@ -41,8 +42,13 @@ module UnicornWrangler
41
42
  end
42
43
 
43
44
  @hooks[:after_fork] = ->(*) do
44
- Signal.trap :TERM do
45
- Thread.new { logger.info 'worker intercepting TERM and doing nothing. Wait for master to send QUIT' }
45
+ # Signal.trap returns the trap that unicorn set, which is an exit!(0) and calls that when sending myself term
46
+ previous_trap = Signal.trap :TERM do
47
+ if sending_myself_term
48
+ previous_trap.call
49
+ else
50
+ Thread.new { logger.info 'worker intercepting TERM and doing nothing. Wait for master to send QUIT' }
51
+ end
46
52
  end
47
53
  end
48
54
  end
@@ -50,6 +56,11 @@ module UnicornWrangler
50
56
  Unicorn::HttpServer.prepend UnicornExtension
51
57
  end
52
58
 
59
+ def kill_worker
60
+ self.sending_myself_term = true # no need to clean up since we are dead after
61
+ Process.kill(:TERM, Process.pid)
62
+ end
63
+
53
64
  # called from the unicorn server after each request
54
65
  def perform_request
55
66
  returned = nil
@@ -116,7 +127,7 @@ module UnicornWrangler
116
127
 
117
128
  report_status "Killing", reason, memory, requests, request_time
118
129
 
119
- Process.kill(:TERM, Process.pid)
130
+ UnicornWrangler.kill_worker
120
131
  end
121
132
 
122
133
  # expensive, do not run on every request
@@ -1,3 +1,3 @@
1
1
  module UnicornWrangler
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unicorn_wrangler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-18 00:00:00.000000000 Z
11
+ date: 2018-04-23 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: michael@grosser.it