logstash-input-redis 0.1.3 → 0.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: fe8520322379d9b3ca6330be6de34f9e6a34ecc8
4
- data.tar.gz: d78576e44a2a2b55bc7abdb44ec2a149b150cfe5
3
+ metadata.gz: c8c722cb3bcfc1d78632ea7a35e37a44e257848c
4
+ data.tar.gz: 08243c568315e73608f6ad82478a08877c5b3fcf
5
5
  SHA512:
6
- metadata.gz: 539f08d50eafd0d32ae3d3914c13e58a05e09028705f581cb930070c9d0c80ba136ccc08a13ec05204a56db5ce0797b0b8ebc151e1b0dc1684f02981fe510c85
7
- data.tar.gz: 0e1725ef10c9926ec75cfca94d8a5c7e4aa38e6abb0bffb064ce9967b22f88b83e97b7f2bb13f2d2cf721e4e656b68afc66192879509d2646188fa9934a47f45
6
+ metadata.gz: 083e7c87a42cd7a899b53c81c79d13b19cea0cf78d54cb95a20a27e3ff088dee96c74d83b9eed341f58d2616c63310cae68b75d766746ac882511c8cca7fc6d4
7
+ data.tar.gz: eabba461cea36cd66b42074afe589e7ec95afa135dd4cae77986d8791e00d2ca7fab3b3771e548781da2ea384ff2937f512c3e376ca948f9ea7af15b653b2bd5
@@ -133,23 +133,23 @@ EOF
133
133
  decorate(event)
134
134
  output_queue << event
135
135
  end
136
+ rescue LogStash::ShutdownSignal => e
137
+ # propagate up
138
+ raise(e)
136
139
  rescue => e # parse or event creation error
137
- @logger.error("Failed to create event", :message => msg, :exception => e,
138
- :backtrace => e.backtrace);
140
+ @logger.error("Failed to create event", :message => msg, :exception => e, :backtrace => e.backtrace);
139
141
  end
140
142
  end
141
143
 
142
144
  private
143
145
  def list_listener(redis, output_queue)
144
146
 
147
+ item = redis.blpop(@key, 0, :timeout => 1)
148
+ return unless item # from timeout or other conditions
149
+
145
150
  # blpop returns the 'key' read from as well as the item result
146
151
  # we only care about the result (2nd item in the list).
147
- item = redis.blpop(@key, 0)[1]
148
-
149
- # blpop failed or .. something?
150
- # TODO(sissel): handle the error
151
- return if item.nil?
152
- queue_event(item, output_queue)
152
+ queue_event(item[1], output_queue)
153
153
 
154
154
  # If @batch_count is 1, there's no need to continue.
155
155
  return if @batch_count == 1
@@ -222,7 +222,7 @@ EOF
222
222
  # loop.
223
223
  private
224
224
  def listener_loop(listener, output_queue)
225
- while !finished?
225
+ while !@shutdown_requested
226
226
  begin
227
227
  @redis ||= connect
228
228
  self.send listener, @redis, output_queue
@@ -232,7 +232,7 @@ EOF
232
232
  @redis = nil
233
233
  sleep 1
234
234
  end
235
- end # while !finished?
235
+ end
236
236
  end # listener_loop
237
237
 
238
238
  public
@@ -244,23 +244,25 @@ EOF
244
244
  else
245
245
  listener_loop :pattern_channel_listener, output_queue
246
246
  end
247
+ rescue LogStash::ShutdownSignal
248
+ # ignore and quit
247
249
  end # def run
248
250
 
249
251
  public
250
252
  def teardown
253
+ @shutdown_requested = true
254
+
251
255
  if @redis
252
256
  if @data_type == 'list'
253
- @redis.quit
257
+ @redis.quit rescue nil
254
258
  elsif @data_type == 'channel'
255
- @redis.unsubscribe
256
- @redis.quit
259
+ @redis.unsubscribe rescue nil
260
+ @redis.connection.disconnect
257
261
  elsif @data_type == 'pattern_channel'
258
- @redis.punsubscribe
259
- @redis.quit
262
+ @redis.punsubscribe rescue nil
263
+ @redis.connection.disconnect
260
264
  end
265
+ @redis = nil
261
266
  end
262
- rescue Redis::BaseError
263
- ensure
264
- @redis = nil
265
267
  end
266
268
  end # class LogStash::Inputs::Redis
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-input-redis'
4
- s.version = '0.1.3'
4
+ s.version = '0.1.4'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "This input will read events from a Redis instance"
7
7
  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"
@@ -1,34 +1,35 @@
1
1
  require "logstash/devutils/rspec/spec_helper"
2
2
  require "redis"
3
+ require "stud/try"
3
4
 
4
5
  def populate(key, event_count)
5
6
  require "logstash/event"
6
7
  redis = Redis.new(:host => "localhost")
7
8
  event_count.times do |value|
8
9
  event = LogStash::Event.new("sequence" => value)
9
- Stud::try(10.times) do
10
+ Stud.try(10.times) do
10
11
  redis.rpush(key, event.to_json)
11
12
  end
12
13
  end
13
14
  end
14
15
 
15
- def process(pipeline, queue, event_count)
16
- sequence = 0
17
- Thread.new { pipeline.run }
18
- event_count.times do |i|
19
- event = queue.pop
16
+ def process(conf, event_count)
17
+ events = input(conf) do |pipeline, queue|
18
+ event_count.times.map{queue.pop}
19
+ end
20
+
21
+ events.each_with_index do |event, i|
20
22
  insist { event["sequence"] } == i
21
23
  end
22
- pipeline.shutdown
23
24
  end # process
24
25
 
25
26
  describe "inputs/redis", :redis => true do
26
-
27
27
 
28
- describe "read events from a list" do
28
+ it "should read events from a list" do
29
29
  key = 10.times.collect { rand(10).to_s }.join("")
30
30
  event_count = 1000 + rand(50)
31
- config <<-CONFIG
31
+ # event_count = 100
32
+ conf = <<-CONFIG
32
33
  input {
33
34
  redis {
34
35
  type => "blah"
@@ -38,15 +39,14 @@ describe "inputs/redis", :redis => true do
38
39
  }
39
40
  CONFIG
40
41
 
41
- before(:each) { populate(key, event_count) }
42
-
43
- input { |pipeline, queue| process(pipeline, queue, event_count) }
42
+ populate(key, event_count)
43
+ process(conf, event_count)
44
44
  end
45
45
 
46
- describe "read events from a list with batch_count=5" do
46
+ it "should read events from a list using batch_count" do
47
47
  key = 10.times.collect { rand(10).to_s }.join("")
48
48
  event_count = 1000 + rand(50)
49
- config <<-CONFIG
49
+ conf = <<-CONFIG
50
50
  input {
51
51
  redis {
52
52
  type => "blah"
@@ -57,7 +57,7 @@ describe "inputs/redis", :redis => true do
57
57
  }
58
58
  CONFIG
59
59
 
60
- before(:each) { populate(key, event_count) }
61
- input { |pipeline, queue| process(pipeline, queue, event_count) }
60
+ populate(key, event_count)
61
+ process(conf, event_count)
62
62
  end
63
63
  end
metadata CHANGED
@@ -1,17 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-input-redis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elasticsearch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-26 00:00:00.000000000 Z
11
+ date: 2015-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- requirement: !ruby/object:Gem::Requirement
14
+ name: logstash-core
15
+ version_requirements: !ruby/object:Gem::Requirement
15
16
  requirements:
16
17
  - - '>='
17
18
  - !ruby/object:Gem::Version
@@ -19,10 +20,7 @@ dependencies:
19
20
  - - <
20
21
  - !ruby/object:Gem::Version
21
22
  version: 2.0.0
22
- name: logstash-core
23
- prerelease: false
24
- type: :runtime
25
- version_requirements: !ruby/object:Gem::Requirement
23
+ requirement: !ruby/object:Gem::Requirement
26
24
  requirements:
27
25
  - - '>='
28
26
  - !ruby/object:Gem::Version
@@ -30,48 +28,50 @@ dependencies:
30
28
  - - <
31
29
  - !ruby/object:Gem::Version
32
30
  version: 2.0.0
31
+ prerelease: false
32
+ type: :runtime
33
33
  - !ruby/object:Gem::Dependency
34
+ name: logstash-codec-json
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
34
40
  requirement: !ruby/object:Gem::Requirement
35
41
  requirements:
36
42
  - - '>='
37
43
  - !ruby/object:Gem::Version
38
44
  version: '0'
39
- name: logstash-codec-json
40
45
  prerelease: false
41
46
  type: :runtime
47
+ - !ruby/object:Gem::Dependency
48
+ name: redis
42
49
  version_requirements: !ruby/object:Gem::Requirement
43
50
  requirements:
44
51
  - - '>='
45
52
  - !ruby/object:Gem::Version
46
53
  version: '0'
47
- - !ruby/object:Gem::Dependency
48
54
  requirement: !ruby/object:Gem::Requirement
49
55
  requirements:
50
56
  - - '>='
51
57
  - !ruby/object:Gem::Version
52
58
  version: '0'
53
- name: redis
54
59
  prerelease: false
55
60
  type: :runtime
61
+ - !ruby/object:Gem::Dependency
62
+ name: logstash-devutils
56
63
  version_requirements: !ruby/object:Gem::Requirement
57
64
  requirements:
58
65
  - - '>='
59
66
  - !ruby/object:Gem::Version
60
67
  version: '0'
61
- - !ruby/object:Gem::Dependency
62
68
  requirement: !ruby/object:Gem::Requirement
63
69
  requirements:
64
70
  - - '>='
65
71
  - !ruby/object:Gem::Version
66
72
  version: '0'
67
- name: logstash-devutils
68
73
  prerelease: false
69
74
  type: :development
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - '>='
73
- - !ruby/object:Gem::Version
74
- version: '0'
75
75
  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
76
76
  email: info@elasticsearch.com
77
77
  executables: []
@@ -109,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  version: '0'
110
110
  requirements: []
111
111
  rubyforge_project:
112
- rubygems_version: 2.4.5
112
+ rubygems_version: 2.1.9
113
113
  signing_key:
114
114
  specification_version: 4
115
115
  summary: This input will read events from a Redis instance