klomp 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,11 @@
1
1
  Klomp Changes
2
2
  --------------------------------------------------------------------------------
3
3
 
4
+ 1.0.4 (2012/10/10)
5
+ ================================================================================
6
+
7
+ - Guard against sentinel creating a second one if it encounters exceptions
8
+
4
9
  1.0.3 (2012/10/10)
5
10
  ================================================================================
6
11
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "klomp"
5
- s.version = "1.0.3"
5
+ s.version = "1.0.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Nick Sieger"]
@@ -1,5 +1,5 @@
1
1
  class Klomp
2
- VERSION = '1.0.3'
2
+ VERSION = '1.0.4'
3
3
 
4
4
  class Error < StandardError; end
5
5
 
@@ -76,6 +76,7 @@ class Klomp
76
76
  subs = subscriptions.dup
77
77
  subscriptions.clear
78
78
  subs.each {|queue, subscriber| subscribe(queue, subscriber) }
79
+ @sentinel = nil
79
80
  end
80
81
 
81
82
  private
@@ -120,7 +121,7 @@ class Klomp
120
121
  return unless logger.debug?
121
122
  body = frame.body
122
123
  body = body.lines.first.chomp + '...' if body =~ /\n/
123
- logger.debug "frame=#{frame.name} #{frame.headers.map{|k,v| k + '=' + v }.join(' ')} body=#{body}"
124
+ logger.debug "frame=#{frame.name} #{frame.headers.map{|k,v| k.to_s + '=' + v.to_s.inspect }.join(' ')} body=#{body}"
124
125
  end
125
126
 
126
127
  def log_exception(ex, level = :error, msg_start = '')
@@ -134,9 +135,10 @@ class Klomp
134
135
 
135
136
  def go_offline(ex)
136
137
  log_exception(ex, :warn, "offline server=#{options['server'].join(':')} ") if logger
138
+ return if @sentinel && @sentinel.alive?
137
139
  @socket.close rescue nil
138
140
  @socket = nil
139
- Sentinel.new(self)
141
+ @sentinel = Sentinel.new(self)
140
142
  stop_subscriber_thread
141
143
  end
142
144
 
@@ -9,12 +9,13 @@ describe Klomp::Connection do
9
9
  Given(:logger) { double("Logger", error:nil, warn:nil, info:nil, debug:nil).as_null_object }
10
10
  Given(:subscriber) { double "subscriber", call:nil }
11
11
  Given(:thread) { double Thread }
12
+ Given(:sentinel) { double Klomp::Sentinel, alive?:true }
12
13
 
13
14
  Given do
14
15
  IO.stub!(:select).and_return([[socket], [socket]])
15
16
  TCPSocket.stub!(:new).and_return socket
16
17
  Thread.stub!(:new).and_return {|*args,&blk| thread.stub!(:block => blk); thread }
17
- Klomp::Sentinel.stub!(new: double("sentinel"))
18
+ Klomp::Sentinel.stub!(new: sentinel)
18
19
  end
19
20
 
20
21
  context "new" do
@@ -275,6 +276,16 @@ describe Klomp::Connection do
275
276
  Klomp::Sentinel.should have_received(:new).with(connection)
276
277
  end
277
278
 
279
+ context "only once" do
280
+
281
+ Then do
282
+ expect_publish.to raise_error(SystemCallError)
283
+ connection.send(:go_offline, begin; raise "error"; rescue; $!; end)
284
+ Klomp::Sentinel.should have_received(:new).with(connection).once
285
+ end
286
+
287
+ end
288
+
278
289
  end
279
290
 
280
291
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: klomp
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -224,7 +224,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
224
224
  version: '0'
225
225
  segments:
226
226
  - 0
227
- hash: 3153745006188263140
227
+ hash: 1370034990818288756
228
228
  required_rubygems_version: !ruby/object:Gem::Requirement
229
229
  none: false
230
230
  requirements: