fluent-plugin-redis_list_poller 0.1.0 → 1.0.0

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: 5664df7a09d8c92d2eff417ca21e3e77c1469d96
4
- data.tar.gz: f23f3179502d0104f0634e7acb5ad1bdc8abd430
3
+ metadata.gz: fe11a0f3a75660f2f69728aaa3b0eab0981e4a25
4
+ data.tar.gz: b9315ebc6d800236eeb92d76c7834cfb2ec2460c
5
5
  SHA512:
6
- metadata.gz: 60ecb470169580c8b2a27ae5d7892f55d547680433ce16e66eb58d0141c0fbabf6d8e4c71de6c100fd8bfead32edae64e94928ad75d63e71691cb09c29ed7f38
7
- data.tar.gz: 5a15699078c53d68f47cdbe5543ddabff3be92676e9d670ccc67a3739e8a8b0e6725a21620509dd5c89a833681dc451b3589a84a780039aa25ab30afb32fd08e
6
+ metadata.gz: 4a1f9d2fd8ca1e2988e1475b824de37e778ff7fcf9e34b7eb9ace0a8b508fbfb4be10037621af1c7e0cb06fa223a618232362ca88bae42b61d3c1f5035696a56
7
+ data.tar.gz: 7c5993c33b32436db596fbe95c6b2cc0a8f5234778a4202d88bbac9c135c7d59d6177139e173b72b38742a58bf69b613f1b0c85e634efe5bbbdbf5a404e7ddbb
@@ -1,4 +1,13 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.0
3
+ v1.0.0
4
+ ---------------
5
+ * Migrate poller parser configuration to Fluent 0.14's new dsl
6
+
7
+ v0.1.1
8
+ ---------------
9
+ * Migrate cool.io watchers to Fluent 0.14's new dsl
10
+
11
+ v0.1.0
12
+ ---------------
4
13
  * Initial release
@@ -12,7 +12,11 @@
12
12
  host 127.0.0.1
13
13
  key test
14
14
  batch_size 1
15
- poll_interval 1
15
+ poll_interval 0.5
16
+
17
+ <parse>
18
+ @type json
19
+ </parse>
16
20
  </source>
17
21
 
18
22
  <match redis.content>
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "fluent-plugin-redis_list_poller"
5
- spec.version = "0.1.0"
5
+ spec.version = "1.0.0"
6
6
  spec.authors = ["Jonathan Serafini"]
7
7
  spec.email = ["jonathan@serafini.ca"]
8
8
 
@@ -18,5 +18,5 @@ Gem::Specification.new do |spec|
18
18
  spec.add_development_dependency "bundler"
19
19
  spec.add_development_dependency "rake"
20
20
 
21
- spec.add_runtime_dependency "fluentd", [">= 0.12.0", "< 2"]
21
+ spec.add_runtime_dependency "fluentd", [">= 0.14.0", "< 2"]
22
22
  end
@@ -7,9 +7,10 @@ module Fluent
7
7
  # output metrics to the login pipeline.
8
8
  # @since 0.1.0
9
9
  class RedisListMonitorInput < Input
10
- include Fluent::PluginMixin::Redis
11
-
12
10
  Plugin.register_input('redis_list_monitor', self)
11
+
12
+ include Fluent::PluginMixin::Redis
13
+ helpers :timer
13
14
 
14
15
  # input plugin parameters
15
16
  config_param :tag, :string, :default => nil
@@ -19,7 +20,6 @@ module Fluent
19
20
  # @return [NilClass]
20
21
  def initialize
21
22
  super
22
- require 'cool.io'
23
23
  end
24
24
 
25
25
  # Initialize attributes and parameters
@@ -63,44 +63,22 @@ module Fluent
63
63
  def start
64
64
  super
65
65
 
66
- @loop = Coolio::Loop.new
67
-
68
66
  start_redis
69
67
  start_poller
70
-
71
- @thread = Thread.new(&method(:run))
72
68
  end
73
69
 
74
70
  def start_poller
75
- @poller = TimerWatcher.new(
76
- @poll_interval,
77
- log,
78
- &method(:action_poll)
79
- )
80
-
81
- @loop.attach(@poller)
82
- end
83
-
84
- # Begin the logging pipeline
85
- # @since 0.1.0
86
- # @return [NilClass]
87
- def run
88
- @loop.run
89
- rescue => e
90
- log.error "unexpected error", :error => e
91
- log.error_backtrace
71
+ timer_execute(:poll, @poll_interval) do
72
+ action_poll
73
+ end
92
74
  end
93
75
 
94
76
  # Tear down the plugin
95
77
  # @since 0.1.0
96
78
  # @return [NilClass]
97
79
  def shutdown
98
- @loop.watchers.each { |w| w.detach }
99
- @loop.stop
100
- Thread.kill(@thread)
101
- @thread.join
102
- shutdown_redis
103
80
  super
81
+ shutdown_redis
104
82
  end
105
83
 
106
84
  # Wether the poller has been temporarily disabled or should fetch messages
@@ -150,25 +128,6 @@ module Fluent
150
128
  log.error_backtrace
151
129
  sleep!(@retry_interval)
152
130
  end
153
-
154
- # Generic Cool.io timer which will execute a given callback on schedule.
155
- # @since 0.1.0
156
- class TimerWatcher < Coolio::TimerWatcher
157
- attr_reader :log
158
-
159
- def initialize(interval, log, &callback)
160
- @callback = callback
161
- @log = log
162
- super(interval, true)
163
- end
164
-
165
- def on_timer
166
- @callback.call
167
- rescue => e
168
- log.error "unexpected error", :error=>e
169
- log.error_backtrace
170
- end
171
- end
172
131
  end
173
132
  end
174
133
  end
@@ -1,4 +1,6 @@
1
1
  require "fluent/plugin/input"
2
+ require "fluent/plugin/parser"
3
+ require 'fluent/process'
2
4
  require "fluent/plugin_mixin/redis"
3
5
 
4
6
  module Fluent
@@ -7,8 +9,8 @@ module Fluent
7
9
  include Fluent::PluginMixin::Redis
8
10
 
9
11
  Plugin.register_input('redis_list_poller', self)
10
-
11
12
  helpers :storage
13
+ helpers :timer
12
14
 
13
15
  # redis list details
14
16
  # - command: redis command to execute when fetching messages
@@ -18,14 +20,17 @@ module Fluent
18
20
 
19
21
  # input plugin parameters
20
22
  config_param :tag, :string, :default => nil
21
- config_param :format, :string, :default => "json"
23
+
24
+ # parser plugin parameters
25
+ config_section :parse, :init => true, :multi => false do
26
+ config_set_default :@type, "json"
27
+ end
22
28
 
23
29
  # Initialize new input plugin
24
30
  # @since 0.1.0
25
31
  # @return [NilClass]
26
32
  def initialize
27
33
  super
28
- require 'cool.io'
29
34
  require 'msgpack'
30
35
  end
31
36
 
@@ -46,7 +51,7 @@ module Fluent
46
51
  # @since 0.1.0
47
52
  # @return [NilClass]
48
53
  def configure_params(config)
49
- %w(host port key command format tag).each do |key|
54
+ %w(host port key command tag).each do |key|
50
55
  next if instance_variable_get("@#{key}")
51
56
  raise Fluent::ConfigError, "configuration key missing: #{key}"
52
57
  end
@@ -60,8 +65,10 @@ module Fluent
60
65
  # @since 0.1.0
61
66
  # @return [NilClass]
62
67
  def configure_parser(config)
63
- @parser = Plugin.new_parser(@format)
64
- @parser.configure(config)
68
+ parser_config = @parse.corresponding_config_element
69
+ parser_type = parser_config['@type']
70
+ @parser = Fluent::Plugin.new_parser(parser_type, :parent => self)
71
+ @parser.configure(parser_config)
65
72
  end
66
73
 
67
74
  # Configure locking
@@ -81,11 +88,9 @@ module Fluent
81
88
  # @return [NilClass]
82
89
  def start
83
90
  super
84
-
85
- @loop = Coolio::Loop.new
86
91
  start_redis
87
92
  start_poller
88
- @thread = Thread.new(&method(:run))
93
+ start_monitor
89
94
  end
90
95
 
91
96
  # Prepare the Redis queue poller
@@ -96,42 +101,30 @@ module Fluent
96
101
  # @since 0.1.0
97
102
  # @return [NilClass]
98
103
  def start_poller
99
- @poller = TimerWatcher.new(
100
- @poll_interval,
101
- log,
102
- &method(:action_poll)
103
- )
104
-
105
- @lock_monitor = TimerWatcher.new(
106
- 1,
107
- log,
108
- &method(:action_locking_monitor)
109
- )
110
-
111
- @loop.attach(@poller)
112
- @loop.attach(@lock_monitor)
104
+ timer_execute(:poller, @poll_interval) do
105
+ action_poll
106
+ end
113
107
  end
114
108
 
115
- # Begin the logging pipeline
116
- # @since 0.1.0
109
+ # Prepare the Redis queue monitor
110
+ #
111
+ # This timed event will routinely poll for a lock key and disable the
112
+ # queue poller if required
113
+ #
114
+ # @since 0.1.1
117
115
  # @return [NilClass]
118
- def run
119
- @loop.run
120
- rescue => e
121
- log.error "unexpected error", :error => e
122
- log.error_backtrace
116
+ def start_monitor
117
+ timer_execute(:monitor, 1) do
118
+ action_locking_monitor
119
+ end
123
120
  end
124
121
 
125
122
  # Tear down the plugin
126
123
  # @since 0.1.0
127
124
  # @return [NilClass]
128
125
  def shutdown
129
- @loop.watchers.each { |w| w.detach }
130
- @loop.stop
131
- Thread.kill(@thread)
132
- @thread.join
133
- shutdown_redis
134
126
  super
127
+ shutdown_redis
135
128
  end
136
129
 
137
130
  # Whether to fetch a single item or a multiple items in batch
@@ -239,25 +232,6 @@ module Fluent
239
232
  log.error_backtrace
240
233
  sleep!(@retry_interval)
241
234
  end
242
-
243
- # Generic Cool.io timer which will execute a given callback on schedule.
244
- # @since 0.1.0
245
- class TimerWatcher < Coolio::TimerWatcher
246
- attr_reader :log
247
-
248
- def initialize(interval, log, &callback)
249
- @callback = callback
250
- @log = log
251
- super(interval, true)
252
- end
253
-
254
- def on_timer
255
- @callback.call
256
- rescue => e
257
- log.error "unexpected error", :error => e
258
- log.error_backtrace
259
- end
260
- end
261
235
  end
262
236
  end
263
237
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-redis_list_poller
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Serafini
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-04 00:00:00.000000000 Z
11
+ date: 2016-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,7 +44,7 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 0.12.0
47
+ version: 0.14.0
48
48
  - - "<"
49
49
  - !ruby/object:Gem::Version
50
50
  version: '2'
@@ -54,7 +54,7 @@ dependencies:
54
54
  requirements:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
- version: 0.12.0
57
+ version: 0.14.0
58
58
  - - "<"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '2'