crabfarm 0.0.14 → 0.0.15
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/crabfarm/engines/safe_state_loop.rb +28 -18
- data/lib/crabfarm/forked_state.rb +1 -1
- data/lib/crabfarm/modes/server.rb +2 -1
- data/lib/crabfarm/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9c3775845087acaaa1cc6a8ba773a034d52e8ed
|
4
|
+
data.tar.gz: 78156359fc8d036ad54a591be1923ac96eb5aa72
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4aa1971119f25c19a1bae8f606464cc20e0025a02b02ea960749b22ed3602acb6d69b4a58dfa4af18851ecfacba528646b2fc0c6bb4cd8b0c8a8239bd6f9f07
|
7
|
+
data.tar.gz: d7ecd4359f474d94b109a62b48f35e2af394d3aa0aad62e27d8ef6ac3f00f99037897c56f68fc285470dfa72c14246f3d6e1219d9be71efd05a470bb54950c4f
|
@@ -5,17 +5,36 @@ module Crabfarm
|
|
5
5
|
module Engines
|
6
6
|
class SafeStateLoop
|
7
7
|
|
8
|
+
class LoopAbortedException < StandardError; end
|
9
|
+
|
8
10
|
def initialize
|
9
|
-
@running = true
|
10
11
|
@working = false
|
11
12
|
@fatal = nil
|
12
13
|
@lock = Mutex.new
|
13
|
-
@thread = Thread.new { crawl_loop }
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
17
|
-
@
|
18
|
-
|
16
|
+
def start
|
17
|
+
@lock.synchronize {
|
18
|
+
if @thread.nil?
|
19
|
+
@fatal = nil
|
20
|
+
@thread = Thread.new { crawl_loop }
|
21
|
+
end
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
def stop
|
26
|
+
@lock.synchronize {
|
27
|
+
unless @thread.nil?
|
28
|
+
@thread.raise LoopAbortedException
|
29
|
+
@thread.join
|
30
|
+
@thread = nil
|
31
|
+
end
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
def restart
|
36
|
+
stop
|
37
|
+
start
|
19
38
|
end
|
20
39
|
|
21
40
|
def change_state(_name, _params={}, _wait=nil)
|
@@ -43,17 +62,6 @@ module Crabfarm
|
|
43
62
|
}
|
44
63
|
end
|
45
64
|
|
46
|
-
def cancel
|
47
|
-
@lock.synchronize {
|
48
|
-
if @working
|
49
|
-
@thread.terminate
|
50
|
-
@thread.join
|
51
|
-
@thread = Thread.new { crawl_loop }
|
52
|
-
@working = false
|
53
|
-
end
|
54
|
-
}
|
55
|
-
end
|
56
|
-
|
57
65
|
private
|
58
66
|
|
59
67
|
def matches_current_state?(_name, _params)
|
@@ -95,7 +103,7 @@ module Crabfarm
|
|
95
103
|
context = Crabfarm::Context.new
|
96
104
|
|
97
105
|
begin
|
98
|
-
|
106
|
+
loop do
|
99
107
|
if @working
|
100
108
|
@elapsed = Benchmark.measure do
|
101
109
|
begin
|
@@ -119,12 +127,14 @@ module Crabfarm
|
|
119
127
|
}
|
120
128
|
else sleep 0.2 end
|
121
129
|
end
|
130
|
+
rescue LoopAbortedException
|
131
|
+
logger.info "StateLoop: stopping"
|
132
|
+
|
122
133
|
rescue Exception => e
|
123
134
|
logger.fatal "StateLoop: unhandled exception!"
|
124
135
|
logger.fatal e
|
125
136
|
|
126
137
|
@lock.synchronize {
|
127
|
-
@working = false
|
128
138
|
@fatal = e
|
129
139
|
}
|
130
140
|
ensure
|
@@ -64,12 +64,13 @@ module Crabfarm
|
|
64
64
|
|
65
65
|
def self.start(_options)
|
66
66
|
@@evaluator = Engines::SafeStateLoop.new
|
67
|
+
@@evaluator.start
|
67
68
|
begin
|
68
69
|
Support::CustomPuma.run API, _options
|
69
70
|
rescue SystemExit, Interrupt
|
70
71
|
# just finish
|
71
72
|
ensure
|
72
|
-
@@evaluator.
|
73
|
+
@@evaluator.stop
|
73
74
|
end
|
74
75
|
end
|
75
76
|
|
data/lib/crabfarm/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crabfarm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ignacio Baixas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jbuilder
|