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.
Files changed (48) hide show
  1. data/.document +6 -5
  2. data/DEPLOY +13 -0
  3. data/GIT-VERSION-GEN +1 -1
  4. data/GNUmakefile +1 -1
  5. data/README +32 -6
  6. data/SIGNALS +11 -7
  7. data/TODO +2 -3
  8. data/lib/rainbows.rb +10 -3
  9. data/lib/rainbows/app_pool.rb +90 -0
  10. data/lib/rainbows/base.rb +41 -4
  11. data/lib/rainbows/const.rb +1 -6
  12. data/lib/rainbows/http_server.rb +1 -1
  13. data/lib/rainbows/rev.rb +174 -0
  14. data/lib/rainbows/revactor.rb +40 -37
  15. data/lib/rainbows/thread_pool.rb +31 -57
  16. data/lib/rainbows/thread_spawn.rb +32 -45
  17. data/local.mk.sample +4 -3
  18. data/t/.gitignore +1 -2
  19. data/t/GNUmakefile +21 -7
  20. data/t/README +42 -0
  21. data/t/bin/content-md5-put +36 -0
  22. data/t/bin/unused_listen +1 -1
  23. data/t/content-md5.ru +23 -0
  24. data/t/sleep.ru +11 -0
  25. data/t/t0000-basic.sh +29 -3
  26. data/t/t1000-thread-pool-basic.sh +5 -6
  27. data/t/t1000.ru +5 -1
  28. data/t/t1002-thread-pool-graceful.sh +37 -0
  29. data/t/t2000-thread-spawn-basic.sh +4 -6
  30. data/t/t2000.ru +5 -1
  31. data/t/t2002-thread-spawn-graceful.sh +37 -0
  32. data/t/t3000-revactor-basic.sh +4 -6
  33. data/t/t3000.ru +5 -1
  34. data/t/t3001-revactor-pipeline.sh +46 -0
  35. data/t/t3002-revactor-graceful.sh +38 -0
  36. data/t/t3003-revactor-reopen-logs.sh +54 -0
  37. data/t/t3100-revactor-tee-input.sh +8 -13
  38. data/t/t4000-rev-basic.sh +51 -0
  39. data/t/t4000.ru +9 -0
  40. data/t/t4002-rev-graceful.sh +52 -0
  41. data/t/t4003-rev-parser-error.sh +34 -0
  42. data/t/t4100-rev-rack-input.sh +44 -0
  43. data/t/t4101-rev-rack-input-trailer.sh +51 -0
  44. data/t/t9000-rack-app-pool.sh +37 -0
  45. data/t/t9000.ru +14 -0
  46. data/t/test-lib.sh +29 -2
  47. data/vs_Unicorn +50 -1
  48. 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 of
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.1.1
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-06 00:00:00 -07:00
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
- - README
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
- - ChangeLog
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