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 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