logstash-input-rabbitmq 3.1.3 → 3.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e0b1ce0ea58bfa665489175420267cdc7d4de926
4
- data.tar.gz: 269db5d3a032d318d4302852628fa351076b8b8d
3
+ metadata.gz: 0507d6cfebcee1574e915e72dcde6851d4b6584d
4
+ data.tar.gz: 066a1bf95bf831b85e7bbc3badb0830477cbdd8e
5
5
  SHA512:
6
- metadata.gz: d4778c747ff78c0e5c857493e55f9ea25563dca8f9d6a48c5d4659ae977bfb1f1f96b0e96a812654b9e2c3d59f277873590cd66d2b9aa30378ac7c7deecb7f9c
7
- data.tar.gz: 2123805fa8f03a7a394c1cb6a17b5a5c0b2cbd963d0834745be4e657b6b3ec33397306d3c0777f4180e2651f356e114734b4bb9a9d4bf77957e2b39a632e8e29
6
+ metadata.gz: 17958b74fcd840beba8247d5654db7b6b203ec1e7515d24dcefcab4f884aa2a57db119e79668d3a28db06bc87e35a238f1cc41e1276fac8f38ce543ba57d50fb
7
+ data.tar.gz: c13776c81987dc71144de3e91e532bf2b2f58daa03d2baf2276ce51a3cb2f66f4ba392005236c02f74ffe0c24bfc24953fd2aec3eca2f273583e3af649b0da36
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 3.1.4
2
+ - Fix a bug where this plugin would not properly reconnect if it lost its connection to the server while the connection would re-establish itself, the queue subscription would not
3
+
1
4
  ## 3.1.3
2
5
  - Fix a spec that shouldn't have broken with LS2.2
3
6
  ## 3.1.2
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # Logstash Plugin
2
2
 
3
- [![Build
4
- Status](http://build-eu-00.elastic.co/view/LS%20Plugins/view/LS%20Inputs/job/logstash-plugin-input-rabbitmq-unit/badge/icon)](http://build-eu-00.elastic.co/view/LS%20Plugins/view/LS%20Inputs/job/logstash-plugin-input-rabbitmq-unit/)
3
+ [![Travis Build Status](https://travis-ci.org/logstash-plugins/logstash-input-rabbitmq.svg)](https://travis-ci.org/logstash-plugins/logstash-input-rabbitmq)
5
4
 
6
5
  This is a plugin for [Logstash](https://github.com/elastic/logstash).
7
6
 
@@ -86,4 +85,4 @@ Programming is not a required skill. Whatever you've seen about open source and
86
85
 
87
86
  It is more important to the community that you are able to contribute.
88
87
 
89
- For more information about contributing, see the [CONTRIBUTING](https://github.com/elastic/logstash/blob/master/CONTRIBUTING.md) file.
88
+ For more information about contributing, see the [CONTRIBUTING](https://github.com/elastic/logstash/blob/master/CONTRIBUTING.md) file.
@@ -52,6 +52,10 @@ module LogStash
52
52
  # * Wildcards are not valid on direct exchanges.
53
53
  config :key, :validate => :string, :default => "logstash"
54
54
 
55
+ # Amount of time in seconds to wait after a failed subscription request
56
+ # before retrying. Subscribes can fail if the server goes away and then comes back
57
+ config :subscription_retry_interval_seconds, :validate => :number, :required => true, :default => 5
58
+
55
59
  def register
56
60
  connect!
57
61
  declare_queue!
@@ -93,15 +97,38 @@ module LogStash
93
97
  def consume!
94
98
  # we manually build a consumer here to be able to keep a reference to it
95
99
  # in an @ivar even though we use a blocking version of HB::Queue#subscribe
96
- @consumer = @hare_info.queue.build_consumer(:block => true) do |metadata, data|
97
- @codec.decode(data) do |event|
98
- decorate(event)
99
- @output_queue << event if event
100
+
101
+ # The logic here around resubscription might seem strange, but its predicated on the fact
102
+ # that we rely on MarchHare to do the reconnection for us with auto_reconnect.
103
+ # Unfortunately, while MarchHare does the reconnection work it won't re-subscribe the consumer
104
+ # hence the logic below.
105
+ loop do
106
+ begin
107
+ @consumer = @hare_info.queue.build_consumer(:block => true) do |metadata, data|
108
+ @codec.decode(data) do |event|
109
+ decorate(event)
110
+ @output_queue << event if event
111
+ end
112
+ @hare_info.channel.ack(metadata.delivery_tag) if @ack
113
+ end
114
+
115
+ if @hare_info.connection.connected?
116
+ @logger.info("Will subscribe with consumer", :config => config)
117
+ @hare_info.queue.subscribe_with(@consumer, :manual_ack => @ack, :block => true)
118
+ @logger.warn("Queue subscription ended! Will retry in #{@subscription_retry_interval_seconds}s", :config => config)
119
+ else
120
+ @logger.info("RabbitMQ connection down, will wait to retry subscription", :config => config)
121
+ end
122
+
123
+ break if stop?
124
+ @consumer.gracefully_shut_down # Try to clean up gracefully
125
+ rescue MarchHare::Exception => e
126
+ @logger.warn("Error re-subscribing to queue!", :config => config, :message => e.message, :class => e.class.name)
100
127
  end
101
- @hare_info.channel.ack(metadata.delivery_tag) if @ack
102
- end
103
128
 
104
- @hare_info.queue.subscribe_with(@consumer, :manual_ack => @ack, :block => true)
129
+ Stud.stoppable_sleep(@subscription_retry_interval_seconds) { stop? }
130
+ break if stop? # In case an error was hit before the break above was hit
131
+ end
105
132
  end
106
133
 
107
134
  def stop
@@ -117,4 +144,4 @@ module LogStash
117
144
 
118
145
  end
119
146
  end
120
- end
147
+ end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-input-rabbitmq'
3
- s.version = '3.1.3'
3
+ s.version = '3.1.4'
4
4
  s.licenses = ['Apache License (2.0)']
5
5
  s.summary = "Pull events from a RabbitMQ exchange."
6
6
  s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
@@ -91,6 +91,20 @@ describe LogStash::Inputs::RabbitMQ do
91
91
  expect(queue).to have_received(:bind).with(any_args).twice()
92
92
  end
93
93
  end
94
+
95
+ context "initially unable to subscribe" do
96
+ before do
97
+ i = 0
98
+ allow(queue).to receive(:subscribe_with).with(any_args) do
99
+ i += 1
100
+ raise "sub error" if i == 1
101
+ end
102
+
103
+ it "should retry the subscribe" do
104
+ expect(queue).to have_receive(:subscribe_with).twice()
105
+ end
106
+ end
107
+ end
94
108
  end
95
109
  end
96
110
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-input-rabbitmq
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.3
4
+ version: 3.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-26 00:00:00.000000000 Z
11
+ date: 2016-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstash-core