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 +4 -4
- data/lib/unicorn_wrangler.rb +14 -3
- data/lib/unicorn_wrangler/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a3a8ecfbd1a4bb724bda20436ca8047d427e4aafcd69b066cb8dd151853e07b
|
4
|
+
data.tar.gz: aa7c119ec19b8580476b828227f20bb002045524e4c316fbd154495fa740511f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60429f9e58f17cac7ca81566a2427100d75e4e2a8b7e88dbe1304829b783e174e3308eb14248d594576944eab16e94ddbed88a3799e8b5c28c52b024de81d1c0
|
7
|
+
data.tar.gz: 57b724a224098c48f7ef71d7d0f7e41ffb8e9a000442b44a456b588ea11c2fe0234cfca68ac85ba0873380192179066df08631f2b910e7cd1462d7dcdaa05fdc
|
data/lib/unicorn_wrangler.rb
CHANGED
@@ -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
|
45
|
-
|
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
|
-
|
130
|
+
UnicornWrangler.kill_worker
|
120
131
|
end
|
121
132
|
|
122
133
|
# expensive, do not run on every request
|
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.
|
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-
|
11
|
+
date: 2018-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: michael@grosser.it
|