fluent-plugin-kafka 0.12.0 → 0.12.1

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
  SHA256:
3
- metadata.gz: 76970655d31ac19d5088faf9e2d6afe0d4bd4f239f7fea5373a9e1b90e292e1f
4
- data.tar.gz: 50c1999dc3f5196eaceb3c8a65ca041e83ce4e85e0d190229340a711bd9ea96d
3
+ metadata.gz: 497c5a450bc4f55ddaf1b46454ed80f028c283775666e2a38ee0d91f16d391ef
4
+ data.tar.gz: 5f40c26e75f06e4ee73cc0b3ba32ef8438da48bea465549fb95f4bcb89e98819
5
5
  SHA512:
6
- metadata.gz: 99464865d2cc92905645e656e38380b1dcfde57027666bde9d31eb8e0c109e086053ecdb2b1347118c6e2f0805f6acbcb3591fff044a7a92985ed7328af4869b
7
- data.tar.gz: '01296913c6807deec4e33bd067517c8641ddf9e59ac8ea410ad1861ce6ab64b69aa8ac308c505b8ec44e94408b6d49d8bf63754c9ec4a55a589e291c12741550'
6
+ metadata.gz: dcac3281832905427ad5799b6b1d7c9dab9b13562c19ba8283fa4eaf2ea1b88e7c782714be7cec9546878e26ab223725b0cbc06259bc8e375eff5e407575bb3f
7
+ data.tar.gz: deef97208222254e9fc4b0279f0dd9045c177354fa1a8dcca3a304d3b2a5d1090e1e7970b5cd9066d7ff917e8020b798d4dd674623285c52041c173fe37d48f5
data/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ Release 0.12.1 - 2019/10/14
2
+
3
+ * input: Add time_source parameter to replace use_record_time
4
+
1
5
  Release 0.12.0 - 2019/09/27
2
6
 
3
7
  * Support rdkafka-ruby v0.7. Drop v0.6 support.
@@ -13,7 +13,7 @@ Gem::Specification.new do |gem|
13
13
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
14
  gem.name = "fluent-plugin-kafka"
15
15
  gem.require_paths = ["lib"]
16
- gem.version = '0.12.0'
16
+ gem.version = '0.12.1'
17
17
  gem.required_ruby_version = ">= 2.1.0"
18
18
 
19
19
  gem.add_dependency "fluentd", [">= 0.10.58", "< 2"]
@@ -35,10 +35,13 @@ class Fluent::KafkaInput < Fluent::Input
35
35
  config_param :offset_zookeeper, :string, :default => nil
36
36
  config_param :offset_zk_root_node, :string, :default => '/fluent-plugin-kafka'
37
37
  config_param :use_record_time, :bool, :default => false,
38
- :desc => "Replace message timestamp with contents of 'time' field."
38
+ :desc => "Replace message timestamp with contents of 'time' field.",
39
+ :deprecated => "Use 'time_source record' instead."
40
+ config_param :time_source, :enum, :list => [:now, :kafka, :record], :default => :now,
41
+ :desc => "Source for message timestamp."
39
42
  config_param :get_kafka_client_log, :bool, :default => false
40
43
  config_param :time_format, :string, :default => nil,
41
- :desc => "Time format to be used to parse 'time' filed."
44
+ :desc => "Time format to be used to parse 'time' field."
42
45
  config_param :kafka_message_key, :string, :default => nil,
43
46
  :desc => "Set kafka's message key to this field"
44
47
 
@@ -110,7 +113,9 @@ class Fluent::KafkaInput < Fluent::Input
110
113
 
111
114
  @parser_proc = setup_parser
112
115
 
113
- if @use_record_time and @time_format
116
+ @time_source = :record if @use_record_time
117
+
118
+ if @time_source == :record and @time_format
114
119
  if defined?(Fluent::TimeParser)
115
120
  @time_parser = Fluent::TimeParser.new(@time_format)
116
121
  else
@@ -206,6 +211,7 @@ class Fluent::KafkaInput < Fluent::Input
206
211
  offset_manager,
207
212
  router,
208
213
  @kafka_message_key,
214
+ @time_source,
209
215
  opt)
210
216
  }
211
217
  @topic_watchers.each {|tw|
@@ -230,7 +236,7 @@ class Fluent::KafkaInput < Fluent::Input
230
236
  end
231
237
 
232
238
  class TopicWatcher < Coolio::TimerWatcher
233
- def initialize(topic_entry, kafka, interval, parser, add_prefix, add_suffix, offset_manager, router, kafka_message_key, options={})
239
+ def initialize(topic_entry, kafka, interval, parser, add_prefix, add_suffix, offset_manager, router, kafka_message_key, time_source, options={})
234
240
  @topic_entry = topic_entry
235
241
  @kafka = kafka
236
242
  @callback = method(:consume)
@@ -241,6 +247,7 @@ class Fluent::KafkaInput < Fluent::Input
241
247
  @offset_manager = offset_manager
242
248
  @router = router
243
249
  @kafka_message_key = kafka_message_key
250
+ @time_source = time_source
244
251
 
245
252
  @next_offset = @topic_entry.offset
246
253
  if @topic_entry.offset == -1 && offset_manager
@@ -277,14 +284,19 @@ class Fluent::KafkaInput < Fluent::Input
277
284
  messages.each { |msg|
278
285
  begin
279
286
  record = @parser.call(msg, @topic_entry)
280
- if @use_record_time
287
+ case @time_source
288
+ when :kafka
289
+ record_time = Fluent::EventTime.from_time(msg.create_time)
290
+ when :now
291
+ record_time = Fluent::Engine.now
292
+ when :record
281
293
  if @time_format
282
294
  record_time = @time_parser.parse(record['time'])
283
295
  else
284
296
  record_time = record['time']
285
297
  end
286
298
  else
287
- record_time = Fluent::Engine.now
299
+ $log.fatal "BUG: invalid time_source: #{@time_source}"
288
300
  end
289
301
  if @kafka_message_key
290
302
  record[@kafka_message_key] = msg.key
@@ -25,10 +25,13 @@ class Fluent::KafkaGroupInput < Fluent::Input
25
25
  config_param :retry_emit_limit, :integer, :default => nil,
26
26
  :desc => "How long to stop event consuming when BufferQueueLimitError happens. Wait retry_emit_limit x 1s. The default is waiting until BufferQueueLimitError is resolved"
27
27
  config_param :use_record_time, :bool, :default => false,
28
- :desc => "Replace message timestamp with contents of 'time' field."
28
+ :desc => "Replace message timestamp with contents of 'time' field.",
29
+ :deprecated => "Use 'time_source record' instead."
30
+ config_param :time_source, :enum, :list => [:now, :kafka, :record], :default => :now,
31
+ :desc => "Source for message timestamp."
29
32
  config_param :get_kafka_client_log, :bool, :default => false
30
33
  config_param :time_format, :string, :default => nil,
31
- :desc => "Time format to be used to parse 'time' filed."
34
+ :desc => "Time format to be used to parse 'time' field."
32
35
  config_param :kafka_message_key, :string, :default => nil,
33
36
  :desc => "Set kafka's message key to this field"
34
37
  config_param :connect_timeout, :integer, :default => nil,
@@ -122,7 +125,9 @@ class Fluent::KafkaGroupInput < Fluent::Input
122
125
  @fetch_opts[:max_wait_time] = @max_wait_time if @max_wait_time
123
126
  @fetch_opts[:min_bytes] = @min_bytes if @min_bytes
124
127
 
125
- if @use_record_time and @time_format
128
+ @time_source = :record if @use_record_time
129
+
130
+ if @time_source == :record and @time_format
126
131
  if defined?(Fluent::TimeParser)
127
132
  @time_parser = Fluent::TimeParser.new(@time_format)
128
133
  else
@@ -230,14 +235,19 @@ class Fluent::KafkaGroupInput < Fluent::Input
230
235
  batch.messages.each { |msg|
231
236
  begin
232
237
  record = @parser_proc.call(msg)
233
- if @use_record_time
238
+ case @time_source
239
+ when :kafka
240
+ record_time = Fluent::EventTime.from_time(msg.create_time)
241
+ when :now
242
+ record_time = Fluent::Engine.now
243
+ when :record
234
244
  if @time_format
235
245
  record_time = @time_parser.parse(record['time'].to_s)
236
246
  else
237
247
  record_time = record['time']
238
248
  end
239
249
  else
240
- record_time = Fluent::Engine.now
250
+ log.fatal "BUG: invalid time_source: #{@time_source}"
241
251
  end
242
252
  if @kafka_message_key
243
253
  record[@kafka_message_key] = msg.key
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-kafka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.12.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hidemasa Togashi
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-09-27 00:00:00.000000000 Z
12
+ date: 2019-10-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd