asir_beanstalk 1.2.0 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
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.
@@ -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.0"
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(:address => '127.0.0.1', :port => 30917)
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
- RESERVE,
67
- /\ARESERVED (\d+) (\d+)\r\n\Z/)
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
- channel.close
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 _send_result state
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.flush
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 @tube
151
+ if t = tube
150
152
  _beanstalk(stream,
151
- "use #{@tube}\r\n",
152
- /\AUSING #{@tube}\r\n\Z/)
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 @tube
166
+ if t = tube
165
167
  _beanstalk(stream,
166
- "watch #{@tube}\r\n",
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
@@ -1,3 +1,3 @@
1
1
  module AsirBeanstalk
2
- VERSION = "1.2.0"
2
+ VERSION = "1.2.3"
3
3
  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.0
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: 2012-12-29 00:00:00.000000000 Z
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.0
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.0
29
+ version: 1.2.3
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rake
32
32
  requirement: !ruby/object:Gem::Requirement