unicorn_wrangler 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
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