rainbows 0.1.1 → 0.2.0
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/.document +6 -5
- data/DEPLOY +13 -0
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +1 -1
- data/README +32 -6
- data/SIGNALS +11 -7
- data/TODO +2 -3
- data/lib/rainbows.rb +10 -3
- data/lib/rainbows/app_pool.rb +90 -0
- data/lib/rainbows/base.rb +41 -4
- data/lib/rainbows/const.rb +1 -6
- data/lib/rainbows/http_server.rb +1 -1
- data/lib/rainbows/rev.rb +174 -0
- data/lib/rainbows/revactor.rb +40 -37
- data/lib/rainbows/thread_pool.rb +31 -57
- data/lib/rainbows/thread_spawn.rb +32 -45
- data/local.mk.sample +4 -3
- data/t/.gitignore +1 -2
- data/t/GNUmakefile +21 -7
- data/t/README +42 -0
- data/t/bin/content-md5-put +36 -0
- data/t/bin/unused_listen +1 -1
- data/t/content-md5.ru +23 -0
- data/t/sleep.ru +11 -0
- data/t/t0000-basic.sh +29 -3
- data/t/t1000-thread-pool-basic.sh +5 -6
- data/t/t1000.ru +5 -1
- data/t/t1002-thread-pool-graceful.sh +37 -0
- data/t/t2000-thread-spawn-basic.sh +4 -6
- data/t/t2000.ru +5 -1
- data/t/t2002-thread-spawn-graceful.sh +37 -0
- data/t/t3000-revactor-basic.sh +4 -6
- data/t/t3000.ru +5 -1
- data/t/t3001-revactor-pipeline.sh +46 -0
- data/t/t3002-revactor-graceful.sh +38 -0
- data/t/t3003-revactor-reopen-logs.sh +54 -0
- data/t/t3100-revactor-tee-input.sh +8 -13
- data/t/t4000-rev-basic.sh +51 -0
- data/t/t4000.ru +9 -0
- data/t/t4002-rev-graceful.sh +52 -0
- data/t/t4003-rev-parser-error.sh +34 -0
- data/t/t4100-rev-rack-input.sh +44 -0
- data/t/t4101-rev-rack-input-trailer.sh +51 -0
- data/t/t9000-rack-app-pool.sh +37 -0
- data/t/t9000.ru +14 -0
- data/t/test-lib.sh +29 -2
- data/vs_Unicorn +50 -1
- metadata +28 -6
data/vs_Unicorn
CHANGED
@@ -3,6 +3,55 @@
|
|
3
3
|
While \Rainbows! depends on Unicorn for its process/socket management,
|
4
4
|
HTTP parser and configuration language; \Rainbows! is more ambitious.
|
5
5
|
|
6
|
+
== Architectural Diagrams
|
7
|
+
|
8
|
+
=== Unicorn uses a 1:1 mapping of processes to clients
|
9
|
+
|
10
|
+
unicorn master
|
11
|
+
\_ unicorn worker[0]
|
12
|
+
| \_ client[0]
|
13
|
+
\_ unicorn worker[1]
|
14
|
+
| \_ client[1]
|
15
|
+
\_ unicorn worker[2]
|
16
|
+
| \_ client[2]
|
17
|
+
...
|
18
|
+
\_ unicorn worker[M]
|
19
|
+
\_ client[M]
|
20
|
+
|
21
|
+
=== \Rainbows! uses a M:N mapping of processes to clients
|
22
|
+
|
23
|
+
rainbows master
|
24
|
+
\_ rainbows worker[0]
|
25
|
+
| \_ client[0,0]
|
26
|
+
| \_ client[0,1]
|
27
|
+
| \_ client[0,2]
|
28
|
+
| ...
|
29
|
+
| \_ client[0,N]
|
30
|
+
\_ rainbows worker[1]
|
31
|
+
| \_ client[1,0]
|
32
|
+
| \_ client[1,1]
|
33
|
+
| \_ client[1,2]
|
34
|
+
| \_ client[1,3]
|
35
|
+
| ...
|
36
|
+
| \_ client[1,N]
|
37
|
+
\_ rainbows worker[2]
|
38
|
+
| \_ client[2,0]
|
39
|
+
| \_ client[2,1]
|
40
|
+
| \_ client[2,2]
|
41
|
+
| ...
|
42
|
+
| \_ client[2,N]
|
43
|
+
...
|
44
|
+
\_ rainbows worker[M]
|
45
|
+
\_ client[M,0]
|
46
|
+
\_ client[M,1]
|
47
|
+
\_ client[M,2]
|
48
|
+
...
|
49
|
+
\_ client[M,N]
|
50
|
+
|
51
|
+
In both cases, workers share common listen sockets with the master and
|
52
|
+
pull connections off the listen queue only if the worker has resources
|
53
|
+
available.
|
54
|
+
|
6
55
|
== Differences from Unicorn
|
7
56
|
|
8
57
|
* log rotation is handled immediately in \Rainbows! whereas Unicorn has
|
@@ -25,7 +74,7 @@ HTTP parser and configuration language; \Rainbows! is more ambitious.
|
|
25
74
|
|
26
75
|
== Similarities with Unicorn
|
27
76
|
|
28
|
-
While some similarities are obvious (we depend on and subclass
|
77
|
+
While some similarities are obvious (we depend on and subclass off
|
29
78
|
Unicorn code), some things are not:
|
30
79
|
|
31
80
|
* Does not attempt to accept() connections when pre-configured limits
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rainbows
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rainbows! developers
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-15 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -44,22 +44,25 @@ executables:
|
|
44
44
|
extensions: []
|
45
45
|
|
46
46
|
extra_rdoc_files:
|
47
|
-
-
|
48
|
-
- LICENSE
|
47
|
+
- ChangeLog
|
49
48
|
- DEPLOY
|
49
|
+
- FAQ
|
50
50
|
- lib/rainbows.rb
|
51
|
+
- lib/rainbows/app_pool.rb
|
51
52
|
- lib/rainbows/base.rb
|
52
53
|
- lib/rainbows/const.rb
|
53
54
|
- lib/rainbows/http_response.rb
|
54
55
|
- lib/rainbows/http_server.rb
|
56
|
+
- lib/rainbows/rev.rb
|
55
57
|
- lib/rainbows/revactor.rb
|
56
58
|
- lib/rainbows/revactor/tee_input.rb
|
57
59
|
- lib/rainbows/thread_pool.rb
|
58
60
|
- lib/rainbows/thread_spawn.rb
|
59
|
-
-
|
61
|
+
- LICENSE
|
60
62
|
- NEWS
|
63
|
+
- README
|
64
|
+
- SIGNALS
|
61
65
|
- TODO
|
62
|
-
- FAQ
|
63
66
|
- TUNING
|
64
67
|
- vs_Unicorn
|
65
68
|
files:
|
@@ -85,10 +88,12 @@ files:
|
|
85
88
|
- TUNING
|
86
89
|
- bin/rainbows
|
87
90
|
- lib/rainbows.rb
|
91
|
+
- lib/rainbows/app_pool.rb
|
88
92
|
- lib/rainbows/base.rb
|
89
93
|
- lib/rainbows/const.rb
|
90
94
|
- lib/rainbows/http_response.rb
|
91
95
|
- lib/rainbows/http_server.rb
|
96
|
+
- lib/rainbows/rev.rb
|
92
97
|
- lib/rainbows/revactor.rb
|
93
98
|
- lib/rainbows/revactor/tee_input.rb
|
94
99
|
- lib/rainbows/thread_pool.rb
|
@@ -99,17 +104,34 @@ files:
|
|
99
104
|
- setup.rb
|
100
105
|
- t/.gitignore
|
101
106
|
- t/GNUmakefile
|
107
|
+
- t/README
|
108
|
+
- t/bin/content-md5-put
|
102
109
|
- t/bin/unused_listen
|
110
|
+
- t/content-md5.ru
|
103
111
|
- t/sha1.ru
|
112
|
+
- t/sleep.ru
|
104
113
|
- t/t0000-basic.sh
|
105
114
|
- t/t0000.ru
|
106
115
|
- t/t1000-thread-pool-basic.sh
|
107
116
|
- t/t1000.ru
|
117
|
+
- t/t1002-thread-pool-graceful.sh
|
108
118
|
- t/t2000-thread-spawn-basic.sh
|
109
119
|
- t/t2000.ru
|
120
|
+
- t/t2002-thread-spawn-graceful.sh
|
110
121
|
- t/t3000-revactor-basic.sh
|
111
122
|
- t/t3000.ru
|
123
|
+
- t/t3001-revactor-pipeline.sh
|
124
|
+
- t/t3002-revactor-graceful.sh
|
125
|
+
- t/t3003-revactor-reopen-logs.sh
|
112
126
|
- t/t3100-revactor-tee-input.sh
|
127
|
+
- t/t4000-rev-basic.sh
|
128
|
+
- t/t4000.ru
|
129
|
+
- t/t4002-rev-graceful.sh
|
130
|
+
- t/t4003-rev-parser-error.sh
|
131
|
+
- t/t4100-rev-rack-input.sh
|
132
|
+
- t/t4101-rev-rack-input-trailer.sh
|
133
|
+
- t/t9000-rack-app-pool.sh
|
134
|
+
- t/t9000.ru
|
113
135
|
- t/test-lib.sh
|
114
136
|
- vs_Unicorn
|
115
137
|
has_rdoc: true
|