asir_beanstalk 1.2.0 → 1.2.3
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/Changelog +11 -0
- data/asir_beanstalk.gemspec +1 -1
- data/example/ex03.rb +1 -1
- data/lib/asir/transport/beanstalk.rb +15 -13
- data/lib/asir_beanstalk/version.rb +1 -1
- metadata +4 -4
data/Changelog
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
2013-01-16 Kurt A. Stephens <ks.github@kurtstephens.com>
|
2
|
+
|
3
|
+
* v1.2.3: New version: bug fixes.
|
4
|
+
* one_way: by default.
|
5
|
+
* reserve: Fix Channel close on reserve error.
|
6
|
+
* flush: stream.flush can cause protocol errors.
|
7
|
+
* delete: Handle job deletion in #_after_invoke_message since #one_way.
|
8
|
+
* tube: Correctly handle /tube uri.
|
9
|
+
* beanstalkd: handle 1MB jobs.
|
10
|
+
* stop: Correctly handle #stop! during block IO during reserve.
|
11
|
+
|
1
12
|
2012-12-28 Kurt A. Stephens <ks.github@kurtstephens.com>
|
2
13
|
|
3
14
|
* v1.2.0: New version.
|
data/asir_beanstalk.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
19
|
gem.require_paths = ["lib"]
|
20
20
|
|
21
|
-
gem.add_dependency "asir", "~> 1.2.
|
21
|
+
gem.add_dependency "asir", "~> 1.2.3"
|
22
22
|
|
23
23
|
gem.add_development_dependency 'rake', '>= 0.9.0'
|
24
24
|
gem.add_development_dependency 'rspec', '~> 2.12.0'
|
data/example/ex03.rb
CHANGED
@@ -6,7 +6,7 @@ require 'asir/transport/beanstalk'
|
|
6
6
|
require 'asir/transport/buffer'
|
7
7
|
begin
|
8
8
|
t =
|
9
|
-
ASIR::Transport::Beanstalk.new(:
|
9
|
+
ASIR::Transport::Beanstalk.new(:uri => "beanstalk://127.0.0.1:30917/other")
|
10
10
|
t.encoder =
|
11
11
|
ASIR::Coder::Marshal.new
|
12
12
|
t.start_conduit!; sleep 1
|
@@ -9,6 +9,7 @@ module ASIR
|
|
9
9
|
attr_accessor :priority, :delay, :ttr
|
10
10
|
|
11
11
|
def initialize *args
|
12
|
+
@one_way = true
|
12
13
|
self.scheme_default ||= 'beanstalk'
|
13
14
|
self.host_default ||= '127.0.0.1'
|
14
15
|
self.port_default ||= 11300
|
@@ -61,10 +62,11 @@ module ASIR
|
|
61
62
|
additional_data = state.additional_data ||= { }
|
62
63
|
state.in_stream.with_stream! do | stream |
|
63
64
|
begin
|
64
|
-
match =
|
65
|
+
match = with_force_stop! do
|
65
66
|
_beanstalk(stream,
|
66
|
-
|
67
|
-
|
67
|
+
RESERVE,
|
68
|
+
/\ARESERVED (\d+) (\d+)\r\n\Z/)
|
69
|
+
end
|
68
70
|
additional_data[:beanstalk_job_id] = match[1].to_i
|
69
71
|
additional_data[:beanstalk_message_size] =
|
70
72
|
size = match[2].to_i
|
@@ -74,7 +76,7 @@ module ASIR
|
|
74
76
|
rescue ::Exception => exc
|
75
77
|
_log { [ :_receive_message, :exception, exc ] }
|
76
78
|
additional_data[:beanstalk_error] = exc
|
77
|
-
|
79
|
+
state.in_stream.close
|
78
80
|
raise exc
|
79
81
|
end
|
80
82
|
end
|
@@ -82,7 +84,7 @@ module ASIR
|
|
82
84
|
|
83
85
|
# !SLIDE
|
84
86
|
# Sends the encoded Result payload String.
|
85
|
-
def
|
87
|
+
def _after_invoke_message state
|
86
88
|
#
|
87
89
|
# There is a possibility here the following could happen:
|
88
90
|
#
|
@@ -107,6 +109,7 @@ module ASIR
|
|
107
109
|
_beanstalk(stream,
|
108
110
|
"delete #{job_id}\r\n",
|
109
111
|
/\ADELETED\r\n\Z/)
|
112
|
+
# state.in_stream.close # Force close.
|
110
113
|
end
|
111
114
|
|
112
115
|
# !SLIDE
|
@@ -136,8 +139,7 @@ module ASIR
|
|
136
139
|
stream.write payload
|
137
140
|
stream.write LINE_TERMINATOR
|
138
141
|
end
|
139
|
-
stream
|
140
|
-
if match = _read_line_and_expect!(stream, expect)
|
142
|
+
if match = _read_line_and_expect!(stream, expect) # , /\A(BAD_FORMAT|UNKNOWN_COMMAND)\r\n\Z/)
|
141
143
|
_log { [ :_beanstalk, :result, match[0] ] } if @verbose >= 3
|
142
144
|
end
|
143
145
|
match
|
@@ -146,10 +148,10 @@ module ASIR
|
|
146
148
|
LINE_TERMINATOR = "\r\n".freeze
|
147
149
|
|
148
150
|
def _after_connect! stream
|
149
|
-
if
|
151
|
+
if t = tube
|
150
152
|
_beanstalk(stream,
|
151
|
-
"use #{
|
152
|
-
/\AUSING #{
|
153
|
+
"use #{t}\r\n",
|
154
|
+
/\AUSING #{t}\r\n\Z/)
|
153
155
|
end
|
154
156
|
end
|
155
157
|
|
@@ -161,9 +163,9 @@ module ASIR
|
|
161
163
|
:try_sleep => 1,
|
162
164
|
:try_sleep_increment => 0.1,
|
163
165
|
:try_sleep_max => 10) do | stream |
|
164
|
-
if
|
166
|
+
if t = tube
|
165
167
|
_beanstalk(stream,
|
166
|
-
"watch #{
|
168
|
+
"watch #{t}\r\n",
|
167
169
|
/\AWATCHING (\d+)\r\n\Z/)
|
168
170
|
end
|
169
171
|
end
|
@@ -188,7 +190,7 @@ module ASIR
|
|
188
190
|
|
189
191
|
def _start_conduit!
|
190
192
|
opt = host ? "-l #{host} " : ""
|
191
|
-
cmd = "beanstalkd #{opt}-p #{port}"
|
193
|
+
cmd = "beanstalkd #{opt}-p #{port} -z #{1 * 1024 * 1024} #{@conduit_options[:beanstalkd_options]}"
|
192
194
|
$stderr.puts " #{cmd}" if @conduit_options[:verbose]
|
193
195
|
exec(cmd)
|
194
196
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asir_beanstalk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: asir
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.2.
|
21
|
+
version: 1.2.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.2.
|
29
|
+
version: 1.2.3
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: rake
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|