logstash-input-redis-cluster 2.0.3 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 35a910295d21a98489ddf116a6ab82e6278f0781
4
- data.tar.gz: d658953749222517f3be6e0875b9a64c36ad8400
3
+ metadata.gz: a3c3e95623f3ffc9e04ce65dabc3b23a8d375963
4
+ data.tar.gz: e82a979f444c1ea185f9ee9d95e7a208022bb368
5
5
  SHA512:
6
- metadata.gz: 21100167f1dae24db67e4bec8c510d5686a65afd773e84d02345eeb675b78a0e2f0e970c3e1d6e92b14491e435607cfc013e5bf6631be8b40f2c03c06ae99ffb
7
- data.tar.gz: b59b5f6e5c669c3ad31ace64f6335c8575c49f54fb603ca20e4ef0559b4142286a505aa43fb4e7a3ea1f7bb756843ce0e14784762b5469f096124f35b0e7c868
6
+ metadata.gz: c2cf58a65112ce42b6840ff4afbacbc444abef37074506a038942091c3ae739265e71f6c1c2532a3f1e7f92660700dce93509c06e021ea334368ff78db810448
7
+ data.tar.gz: 1a577020960613781b7146493e4fd26e1f80d009e872f13752697d20dbece3b65ed70cd1b9bb84ce4d43db891c7aae694c3cacfab2617bc182392946cfcb9455
File without changes
File without changes
data/Gemfile CHANGED
@@ -1,3 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
- gem "redis-rb-cluster", :git => "git://github.com/Tschef/redis-rb-cluster.git"
3
+ gem "redis-rb-cluster", :git => "git://github.com/Tschef/redis-rb-cluster.git"
4
+ gem "hiredis", "~> 0.4.0"
data/LICENSE CHANGED
File without changes
data/NOTICE.TXT CHANGED
File without changes
data/README.md CHANGED
File without changes
Binary file
@@ -1,330 +1,364 @@
1
- # encoding: utf-8
2
- require "logstash/namespace"
3
- require "logstash/inputs/base"
4
- require "logstash/inputs/threadable"
5
-
6
- # This input will read events from a Redis instance; it supports both Redis channels and lists.
7
- # The list command (BLPOP) used by Logstash is supported in Redis v1.3.1+, and
8
- # the channel commands used by Logstash are found in Redis v1.3.8+.
9
- # While you may be able to make these Redis versions work, the best performance
10
- # and stability will be found in more recent stable versions. Versions 2.6.0+
11
- # are recommended.
12
- #
13
- # For more information about Redis, see <http://redis.io/>
14
- #
15
- # `batch_count` note: If you use the `batch_count` setting, you *must* use a Redis version 2.6.0 or
16
- # newer. Anything older does not support the operations used by batching.
17
- #
18
- module LogStash module Inputs class RedisCluster < LogStash::Inputs::Threadable
19
- # class LogStash::Inputs::Redis < LogStash::Inputs::Threadable
20
-
21
- config_name "redis_cluster"
22
-
23
- default :codec, "json"
24
-
25
- # The `name` configuration is used for logging in case there are multiple instances.
26
- # This feature has no real function and will be removed in future versions.
27
- config :name, :validate => :string, :default => "default", :deprecated => true
28
-
29
- # The hostname of your Redis server.
30
- config :host, :validate => :string, :default => "127.0.0.1"
31
-
32
- # The port to connect on.
33
- config :port, :validate => :number, :default => 6379
34
-
35
- # The Redis database number.
36
- config :db, :validate => :number, :default => 0
37
-
38
- # Initial connection timeout in seconds.
39
- config :timeout, :validate => :number, :default => 5
40
-
41
- # Password to authenticate with. There is no authentication by default.
42
- config :password, :validate => :password
43
-
44
- # The name of a Redis list or channel.
45
- # TODO: change required to true
46
- config :keys, :validate => :array
47
-
48
- # Specify either list or channel. If `redis\_type` is `list`, then we will BLPOP the
49
- # key. If `redis\_type` is `channel`, then we will SUBSCRIBE to the key.
50
- # If `redis\_type` is `pattern_channel`, then we will PSUBSCRIBE to the key.
51
- # TODO: change required to true
52
- config :data_type, :validate => [ "list", "channel", "pattern_channel" ], :required => false
53
-
54
- # The number of events to return from Redis using EVAL.
55
- config :batch_count, :validate => :number, :default => 1
56
-
57
- public
58
- # public API
59
- # use to store a proc that can provide a redis instance or mock
60
- def add_external_redis_builder(builder) #callable
61
- @redis_builder = builder
62
- self
63
- end
64
-
65
- # use to apply an instance directly and bypass the builder
66
- def use_redis(instance)
67
- @redis = instance
68
- self
69
- end
70
-
71
- def new_redis_instance
72
- @redis_builder.call
73
- end
74
-
75
- def register
76
- require 'redis-rb-cluster'
77
- @redis_url = "redis://#{@password}@#{@host}:#{@port}/#{@db}"
78
-
79
- # TODO remove after setting key and data_type to true
80
-
81
- if !@keys || !@data_type
82
- raise RuntimeError.new(
83
- "Must define queue, or key and data_type parameters"
84
- )
85
- end
86
- # end TODO
87
-
88
- @redis_builder ||= method(:internal_redis_builder)
89
-
90
- # just switch on data_type once
91
- if @data_type == 'list' || @data_type == 'dummy'
92
- @run_method = method(:list_runner)
93
- @stop_method = method(:list_stop)
94
- elsif @data_type == 'channel'
95
- @run_method = method(:channel_runner)
96
- @stop_method = method(:subscribe_stop)
97
- elsif @data_type == 'pattern_channel'
98
- @run_method = method(:pattern_channel_runner)
99
- @stop_method = method(:subscribe_stop)
100
- end
101
-
102
- # TODO(sissel, boertje): set @identity directly when @name config option is removed.
103
- @identity = @name != 'default' ? @name : "#{@redis_url} #{@data_type}"
104
- @logger.info("Registering Redis", :identity => @identity)
105
- end # def register
106
-
107
- def run(output_queue)
108
- @run_method.call(output_queue)
109
- rescue LogStash::ShutdownSignal
110
- # ignore and quit
111
- end # def run
112
-
113
- def stop
114
- @stop_method.call
115
- end
116
-
117
- # private methods -----------------------------
118
- private
119
-
120
- def batched?
121
- @batch_count > 1
122
- end
123
-
124
- # private
125
- def is_list_type?
126
- @data_type == 'list'
127
- end
128
-
129
- # private
130
- def redis_params
131
- {
132
- :host => @host,
133
- :port => @port,
134
- :timeout => @timeout,
135
- :db => @db,
136
- :password => @password.nil? ? nil : @password.value
137
- }
138
- end
139
-
140
- # private
141
- def internal_redis_builder
142
- ::RedisCluster.new([redis_params],4)
143
- end
144
-
145
- # private
146
- def connect
147
- redis = new_redis_instance
148
- load_batch_script(redis) if batched? && is_list_type?
149
- redis
150
- end # def connect
151
-
152
- # private
153
- def load_batch_script(redis)
154
- #A Redis Lua EVAL script to fetch a count of keys
155
- #in case count is bigger than current items in queue whole queue will be returned without extra nil values
156
- redis_script = <<EOF
157
- local i = tonumber(ARGV[1])
158
- local res = {}
159
- local length = redis.call('llen',KEYS[1])
160
- if length < i then i = length end
161
- while (i > 0) do
162
- local item = redis.call("lpop", KEYS[1])
163
- if (not item) then
164
- break
165
- end
166
- table.insert(res, item)
167
- i = i-1
168
- end
169
- return res
170
- EOF
171
- @redis_script_sha = redis.script(:load, redis_script)
172
- end
173
-
174
- # private
175
- def queue_event(msg, output_queue)
176
- begin
177
- @codec.decode(msg) do |event|
178
- decorate(event)
179
- output_queue << event
180
- end
181
- rescue => e # parse or event creation error
182
- @logger.error("Failed to create event", :message => msg, :exception => e, :backtrace => e.backtrace);
183
- end
184
- end
185
-
186
- # private
187
- def list_stop
188
- return if @redis.nil? || !@redis.connected?
189
-
190
- @redis.quit rescue nil
191
- @redis = nil
192
- end
193
-
194
- # private
195
- def list_runner(output_queue)
196
- while !stop?
197
- begin
198
- @redis ||= connect
199
- list_listener(@redis, output_queue)
200
- rescue ::Redis::BaseError => e
201
- @logger.warn("Redis connection problem", :exception => e)
202
- # Reset the redis variable to trigger reconnect
203
- @redis = nil
204
- # this sleep does not need to be stoppable as its
205
- # in a while !stop? loop
206
- sleep 1
207
- end
208
- end
209
- end
210
-
211
- # private
212
- def list_listener(redis, output_queue)
213
- sampled = @keys.sample
214
- item = redis.blpop(sampled, :timeout => 1)
215
- return unless item # from timeout or other conditions
216
-
217
- # blpop returns the 'key' read from as well as the item result
218
- # we only care about the result (2nd item in the list).
219
- queue_event(item.last, output_queue)
220
-
221
- # If @batch_count is 1, there's no need to continue.
222
- return if !batched?
223
-
224
- begin
225
- redis.evalsha(@redis_script_sha, [sampled], [@batch_count-1]).each do |item|
226
- queue_event(item, output_queue)
227
- end
228
-
229
- # Below is a commented-out implementation of 'batch fetch'
230
- # using pipelined LPOP calls. This in practice has been observed to
231
- # perform exactly the same in terms of event throughput as
232
- # the evalsha method. Given that the EVALSHA implementation uses
233
- # one call to Redis instead of N (where N == @batch_count) calls,
234
- # I decided to go with the 'evalsha' method of fetching N items
235
- # from Redis in bulk.
236
- #redis.pipelined do
237
- #error, item = redis.lpop(@key)
238
- #(@batch_count-1).times { redis.lpop(@key) }
239
- #end.each do |item|
240
- #queue_event(item, output_queue) if item
241
- #end
242
- # --- End commented out implementation of 'batch fetch'
243
- rescue ::Redis::CommandError => e
244
- if e.to_s =~ /NOSCRIPT/ then
245
- @logger.warn("Redis may have been restarted, reloading Redis batch EVAL script", :exception => e);
246
- load_batch_script(redis)
247
- retry
248
- else
249
- raise e
250
- end
251
- end
252
- end
253
-
254
- # private
255
- def subscribe_stop
256
- return if @redis.nil? || !@redis.connected?
257
- # if its a SubscribedClient then:
258
- # it does not have a disconnect method (yet)
259
- if @redis.client.is_a?(::Redis::SubscribedClient)
260
- @redis.client.unsubscribe
261
- else
262
- @redis.client.disconnect
263
- end
264
- @redis = nil
265
- end
266
-
267
- # private
268
- def redis_runner
269
- begin
270
- @redis ||= connect
271
- yield
272
- rescue ::Redis::BaseError => e
273
- @logger.warn("Redis connection problem", :exception => e)
274
- # Reset the redis variable to trigger reconnect
275
- @redis = nil
276
- Stud.stoppable_sleep(1) { stop? }
277
- retry if !stop?
278
- end
279
- end
280
-
281
- # private
282
- def channel_runner(output_queue)
283
- redis_runner do
284
- channel_listener(output_queue)
285
- end
286
- end
287
-
288
- # private
289
- def channel_listener(output_queue)
290
- @redis.subscribe(@keys.sample) do |on|
291
- on.subscribe do |channel, count|
292
- @logger.info("Subscribed", :channel => channel, :count => count)
293
- end
294
-
295
- on.message do |channel, message|
296
- queue_event(message, output_queue)
297
- end
298
-
299
- on.unsubscribe do |channel, count|
300
- @logger.info("Unsubscribed", :channel => channel, :count => count)
301
- end
302
- end
303
- end
304
-
305
- def pattern_channel_runner(output_queue)
306
- redis_runner do
307
- pattern_channel_listener(output_queue)
308
- end
309
- end
310
-
311
- # private
312
- def pattern_channel_listener(output_queue)
313
- @redis.psubscribe @keys.sample do |on|
314
- on.psubscribe do |channel, count|
315
- @logger.info("Subscribed", :channel => channel, :count => count)
316
- end
317
-
318
- on.pmessage do |pattern, channel, message|
319
- queue_event(message, output_queue)
320
- end
321
-
322
- on.punsubscribe do |channel, count|
323
- @logger.info("Unsubscribed", :channel => channel, :count => count)
324
- end
325
- end
326
- end
327
-
328
- # end
329
-
330
- end end end # Redis Inputs LogStash
1
+ # encoding: utf-8
2
+ require "logstash/namespace"
3
+ require "logstash/inputs/base"
4
+ require "logstash/inputs/threadable"
5
+
6
+ # This input will read events from a Redis instance; it supports both Redis channels and lists.
7
+ # The list command (BLPOP) used by Logstash is supported in Redis v1.3.1+, and
8
+ # the channel commands used by Logstash are found in Redis v1.3.8+.
9
+ # While you may be able to make these Redis versions work, the best performance
10
+ # and stability will be found in more recent stable versions. Versions 2.6.0+
11
+ # are recommended.
12
+ #
13
+ # For more information about Redis, see <http://redis.io/>
14
+ #
15
+ # `batch_count` note: If you use the `batch_count` setting, you *must* use a Redis version 2.6.0 or
16
+ # newer. Anything older does not support the operations used by batching.
17
+ #
18
+ module LogStash module Inputs class RedisCluster < LogStash::Inputs::Threadable
19
+ # class LogStash::Inputs::Redis < LogStash::Inputs::Threadable
20
+
21
+ config_name "redis_cluster"
22
+
23
+ default :codec, "json"
24
+
25
+ # The `name` configuration is used for logging in case there are multiple instances.
26
+ # This feature has no real function and will be removed in future versions.
27
+ config :name, :validate => :string, :default => "default", :deprecated => true
28
+
29
+ # The hostname of your Redis server.
30
+ config :host, :validate => :string, :default => "127.0.0.1"
31
+
32
+ # The hostname of your Redis server.
33
+ config :driver, :validate => :string, :default => "jedis"
34
+
35
+ # The port to connect on.
36
+ config :port, :validate => :number, :default => 6379
37
+
38
+ # The Redis database number.
39
+ config :db, :validate => :number, :default => 0
40
+
41
+ # Initial connection timeout in seconds.
42
+ config :timeout, :validate => :number, :default => 5
43
+
44
+ # Initial connection timeout in seconds.
45
+ config :max_connections, :validate => :number, :default => 256
46
+
47
+ # Password to authenticate with. There is no authentication by default.
48
+ config :password, :validate => :password
49
+
50
+ # The name of a Redis list or channel.
51
+ # TODO: change required to true
52
+ config :keys, :validate => :array
53
+
54
+ # Specify either list or channel. If `redis\_type` is `list`, then we will BLPOP the
55
+ # key. If `redis\_type` is `channel`, then we will SUBSCRIBE to the key.
56
+ # If `redis\_type` is `pattern_channel`, then we will PSUBSCRIBE to the key.
57
+ # TODO: change required to true
58
+ config :data_type, :validate => [ "list", "channel", "pattern_channel" ], :required => false
59
+
60
+ # The number of events to return from Redis using EVAL.
61
+ config :batch_count, :validate => :number, :default => 1
62
+
63
+ public
64
+ # public API
65
+ # use to store a proc that can provide a redis instance or mock
66
+ def add_external_redis_builder(builder) #callable
67
+ @redis_builder = builder
68
+ self
69
+ end
70
+
71
+ # use to apply an instance directly and bypass the builder
72
+ def use_redis(instance)
73
+ @redis = instance
74
+ self
75
+ end
76
+
77
+ def new_redis_instance
78
+ @redis_builder.call
79
+ end
80
+
81
+ def register
82
+ @redis_url = "redis://#{@password}@#{@host}:#{@port}/#{@db}"
83
+
84
+ @batch_offset = Random.rand(1024)
85
+ # TODO remove after setting key and data_type to true
86
+
87
+
88
+ if @driver == "jedis" then
89
+ require 'org/apache/commons/commons-pool2/2.3/commons-pool2-2.3.jar'
90
+ require 'redis/clients/jedis/2.7.2/jedis-2.7.2.jar'
91
+ @error_handler = method(:error_handler_jedis)
92
+ else
93
+ require 'org/apache/commons/commons-pool2/2.3/redis-rb-cluster'
94
+ @error_handler = method(:error_handler_redis)
95
+ end
96
+
97
+ if !@keys || !@data_type
98
+ raise RuntimeError.new(
99
+ "Must define queue, or key and data_type parameters"
100
+ )
101
+ end
102
+ # end TODO
103
+
104
+ @redis_builder ||= method(:internal_redis_builder)
105
+
106
+ # just switch on data_type once
107
+ if @data_type == 'list' || @data_type == 'dummy'
108
+ @run_method = method(:list_runner)
109
+ @stop_method = method(:list_stop)
110
+ elsif @data_type == 'channel'
111
+ @run_method = method(:channel_runner)
112
+ @stop_method = method(:subscribe_stop)
113
+ elsif @data_type == 'pattern_channel'
114
+ @run_method = method(:pattern_channel_runner)
115
+ @stop_method = method(:subscribe_stop)
116
+ end
117
+
118
+ # TODO(sissel, boertje): set @identity directly when @name config option is removed.
119
+ @identity = @name != 'default' ? @name : "#{@redis_url} #{@data_type}"
120
+ @logger.info("Registering Redis", :identity => @identity)
121
+ end # def register
122
+
123
+ def run(output_queue)
124
+ @run_method.call(output_queue)
125
+ rescue LogStash::ShutdownSignal
126
+ # ignore and quit
127
+ end # def run
128
+
129
+ def stop
130
+ @stop_method.call
131
+ end
132
+
133
+ # private methods -----------------------------
134
+ private
135
+
136
+ def batched?
137
+ @batch_count > 1
138
+ end
139
+
140
+ # private
141
+ def is_list_type?
142
+ @data_type == 'list'
143
+ end
144
+
145
+ # private
146
+ def redis_params
147
+ {
148
+ :host => @host,
149
+ :port => @port,
150
+ :db => @db,
151
+ :password => @password.nil? ? nil : @password.value,
152
+ :driver => @driver,
153
+ :timeout => @timeout
154
+ }
155
+ end
156
+
157
+ # private
158
+ def internal_redis_builder
159
+ if @driver == "jedis" then
160
+ import "redis.clients.jedis.JedisCluster"
161
+ import "redis.clients.jedis.HostAndPort"
162
+ ::JedisCluster.new(java.util.HashSet.new([HostAndPort.new(redis_params[:host],redis_params[:port])]))
163
+ else
164
+ ::RedisCluster.new([redis_params], @max_connections)
165
+ end
166
+ end
167
+
168
+ # private
169
+ def connect
170
+ redis = new_redis_instance
171
+ redis
172
+ end # def connect
173
+
174
+ # private
175
+ def load_batch_script(redis)
176
+ #A Redis Lua EVAL script to fetch a count of keys
177
+ #in case count is bigger than current items in queue whole queue will be returned without extra nil values
178
+ redis_script = <<EOF
179
+ local i = tonumber(ARGV[1])
180
+ local res = {}
181
+ local length = redis.call('llen',KEYS[1])
182
+ if length < i then i = length end
183
+ while (i > 0) do
184
+ local item = redis.call("lpop", KEYS[1])
185
+ if (not item) then
186
+ break
187
+ end
188
+ table.insert(res, item)
189
+ i = i-1
190
+ end
191
+ return res
192
+ EOF
193
+ @redis_script_sha = redis.script(:load, redis_script)
194
+ end
195
+
196
+ # private
197
+ def queue_event(msg, output_queue)
198
+ begin
199
+ @codec.decode(msg) do |event|
200
+ decorate(event)
201
+ output_queue << event
202
+ end
203
+ rescue => e # parse or event creation error
204
+ @logger.error("Failed to create event", :message => msg, :exception => e, :backtrace => e.backtrace);
205
+ end
206
+ end
207
+
208
+ # private
209
+ def list_stop
210
+ return if @redis.nil? || !@redis.connected?
211
+
212
+ @redis.quit rescue nil
213
+ @redis = nil
214
+ end
215
+
216
+ # private
217
+ def error_handler_redis(func)
218
+ begin
219
+ func.call
220
+ rescue ::Redis::BaseError => e
221
+ @logger.warn("Redis connection problem", :exception => e)
222
+ # Reset the redis variable to trigger reconnect
223
+ @redis = nil
224
+
225
+ return false
226
+ end
227
+
228
+ return true
229
+ end
230
+
231
+ def error_handler_jedis(func)
232
+ import "redis.clients.jedis.exceptions.JedisException"
233
+ begin
234
+ func.call
235
+ rescue ::JedisException => e
236
+ @logger.warn("Redis connection problem", :exception => e)
237
+ # Reset the redis variable to trigger reconnect
238
+ @redis = nil
239
+
240
+ return false
241
+ end
242
+
243
+ return true
244
+ end
245
+
246
+ # private
247
+ def list_runner(output_queue)
248
+ while !stop?
249
+ if !@error_handler.call(lambda {
250
+ @redis ||= connect
251
+ list_listener(@redis, output_queue)
252
+ }) then
253
+ sleep 1
254
+ end
255
+ end
256
+ end
257
+
258
+ # private
259
+ def list_listener(redis, output_queue)
260
+ if batched? then
261
+ for i in 1..@batch_count do
262
+ item = redis.lpop(@keys[(i+@batch_offset)%(@keys.length)])
263
+ queue_event(item, output_queue) if item
264
+ end
265
+ @batch_offset += 1
266
+ end
267
+
268
+ sampled = @keys.sample
269
+ if @driver == "jedis" then
270
+ item = redis.blpop(1, sampled)
271
+ else
272
+ item = redis.blpop(sampled, :timeout => 1)
273
+ end
274
+ return unless item # from timeout or other conditions
275
+
276
+ # blpop returns the 'key' read from as well as the item result
277
+ # we only care about the result (2nd item in the list).
278
+ if @driver == "jedis" then
279
+ item = item.get(item.size()-1);
280
+ else
281
+ item = item.last
282
+ end
283
+ queue_event(item, output_queue)
284
+ end
285
+
286
+ # private
287
+ def subscribe_stop
288
+ return if @redis.nil? || !@redis.connected?
289
+ # if its a SubscribedClient then:
290
+ # it does not have a disconnect method (yet)
291
+ if @driver == "jedis" then
292
+ @redis.quit
293
+ elsif @redis.client.is_a?(::Redis::SubscribedClient)
294
+ @redis.client.unsubscribe
295
+ else
296
+ @redis.client.disconnect
297
+ end
298
+ @redis = nil
299
+ end
300
+
301
+ # private
302
+ def redis_runner
303
+ if @error_handler.call(lambda {
304
+ @redis ||= connect
305
+ }) then
306
+ yield
307
+ else
308
+ # Reset the redis variable to trigger reconnect
309
+ @redis = nil
310
+ Stud.stoppable_sleep(1) { stop? }
311
+ retry if !stop?
312
+ end
313
+ end
314
+
315
+ # private
316
+ def channel_runner(output_queue)
317
+ redis_runner do
318
+ channel_listener(output_queue)
319
+ end
320
+ end
321
+
322
+ # private
323
+ def channel_listener(output_queue)
324
+ @redis.subscribe(@keys.sample) do |on|
325
+ on.subscribe do |channel, count|
326
+ @logger.info("Subscribed", :channel => channel, :count => count)
327
+ end
328
+
329
+ on.message do |channel, message|
330
+ queue_event(message, output_queue)
331
+ end
332
+
333
+ on.unsubscribe do |channel, count|
334
+ @logger.info("Unsubscribed", :channel => channel, :count => count)
335
+ end
336
+ end
337
+ end
338
+
339
+ def pattern_channel_runner(output_queue)
340
+ redis_runner do
341
+ pattern_channel_listener(output_queue)
342
+ end
343
+ end
344
+
345
+ # private
346
+ def pattern_channel_listener(output_queue)
347
+ @redis.psubscribe @keys.sample do |on|
348
+ on.psubscribe do |channel, count|
349
+ @logger.info("Subscribed", :channel => channel, :count => count)
350
+ end
351
+
352
+ on.pmessage do |pattern, channel, message|
353
+ queue_event(message, output_queue)
354
+ end
355
+
356
+ on.punsubscribe do |channel, count|
357
+ @logger.info("Unsubscribed", :channel => channel, :count => count)
358
+ end
359
+ end
360
+ end
361
+
362
+ # end
363
+
364
+ end end end # Redis Inputs LogStash
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-input-redis-cluster'
4
- s.version = '2.0.3'
4
+ s.version = '2.0.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"
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.add_runtime_dependency "logstash-core", ">= 2.0.0.beta2", "< 3.0.0"
24
24
 
25
25
  s.add_runtime_dependency 'logstash-codec-json'
26
+ s.add_runtime_dependency "hiredis", "~> 0.4.0"
26
27
  s.add_runtime_dependency 'redis-rb-cluster'
27
28
 
28
29
  s.add_development_dependency 'logstash-devutils'
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-input-redis-cluster
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-28 00:00:00.000000000 Z
11
+ date: 2015-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -44,6 +44,20 @@ dependencies:
44
44
  - - '>='
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ~>
51
+ - !ruby/object:Gem::Version
52
+ version: 0.4.0
53
+ name: hiredis
54
+ prerelease: false
55
+ type: :runtime
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ version: 0.4.0
47
61
  - !ruby/object:Gem::Dependency
48
62
  requirement: !ruby/object:Gem::Requirement
49
63
  requirements:
@@ -84,7 +98,10 @@ files:
84
98
  - LICENSE
85
99
  - NOTICE.TXT
86
100
  - README.md
101
+ - lib/jedis-2.7.2.jar
87
102
  - lib/logstash/inputs/redis_cluster.rb
103
+ - lib/org/apache/commons/commons-pool2/2.3/commons-pool2-2.3.jar
104
+ - lib/redis/clients/jedis/2.7.2/jedis-2.7.2.jar
88
105
  - logstash-input-redis-cluster.gemspec
89
106
  - spec/inputs/redis_spec.rb
90
107
  homepage: http://www.elastic.co/guide/en/logstash/current/index.html