unicorn 4.8.0 → 4.8.0.1.g10a2
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.
- data/lib/unicorn/http_server.rb +9 -2
- metadata +5 -5
data/lib/unicorn/http_server.rb
CHANGED
@@ -591,6 +591,13 @@ class Unicorn::HttpServer
|
|
591
591
|
EXIT_SIGS = [ :QUIT, :TERM, :INT ]
|
592
592
|
WORKER_QUEUE_SIGS = QUEUE_SIGS - EXIT_SIGS
|
593
593
|
|
594
|
+
def nuke_listeners!(readers)
|
595
|
+
# only called from the worker, ordering is important here
|
596
|
+
tmp = readers.dup
|
597
|
+
readers.replace([false]) # ensure worker does not continue ASAP
|
598
|
+
tmp.each { |io| io.close rescue nil } # break out of IO.select
|
599
|
+
end
|
600
|
+
|
594
601
|
# gets rid of stuff the worker has no business keeping track of
|
595
602
|
# to free some resources and drops all sig handlers.
|
596
603
|
# traps for USR1, USR2, and HUP may be set in the after_fork Proc
|
@@ -618,7 +625,7 @@ class Unicorn::HttpServer
|
|
618
625
|
@after_fork = @listener_opts = @orig_app = nil
|
619
626
|
readers = LISTENERS.dup
|
620
627
|
readers << worker
|
621
|
-
trap(:QUIT) { readers
|
628
|
+
trap(:QUIT) { nuke_listeners!(readers) }
|
622
629
|
readers
|
623
630
|
end
|
624
631
|
|
@@ -677,7 +684,7 @@ class Unicorn::HttpServer
|
|
677
684
|
worker.tick = Time.now.to_i
|
678
685
|
ret = IO.select(readers, nil, nil, @timeout) and ready = ret[0]
|
679
686
|
rescue => e
|
680
|
-
redo if nr < 0
|
687
|
+
redo if nr < 0 && readers[0]
|
681
688
|
Unicorn.log_error(@logger, "listen loop error", e) if readers[0]
|
682
689
|
end while readers[0]
|
683
690
|
end
|
metadata
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
name: !binary |-
|
3
3
|
dW5pY29ybg==
|
4
4
|
version: !ruby/object:Gem::Version
|
5
|
-
version: 4.8.0
|
6
|
-
prerelease:
|
5
|
+
version: 4.8.0.1.g10a2
|
6
|
+
prerelease: 8
|
7
7
|
platform: ruby
|
8
8
|
authors:
|
9
9
|
- Unicorn hackers
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-01-
|
13
|
+
date: 2014-01-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: !binary |-
|
@@ -351,9 +351,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
351
351
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
352
352
|
none: false
|
353
353
|
requirements:
|
354
|
-
- - ! '
|
354
|
+
- - ! '>'
|
355
355
|
- !ruby/object:Gem::Version
|
356
|
-
version:
|
356
|
+
version: 1.3.1
|
357
357
|
requirements: []
|
358
358
|
rubyforge_project: !binary |-
|
359
359
|
bW9uZ3JlbA==
|