fluent-plugin-kafka-enchanced 0.5.31 → 0.5.32

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: 126ac61c90d73c137a2617876ee242a394659b14
4
- data.tar.gz: fc9180ce1429f3aa2af0a4aea3eb12e9254b58cd
3
+ metadata.gz: 33fd86ef94e5d7e9340ed79329dff51ea2f32a4a
4
+ data.tar.gz: 1caa6add35ca52ee497068a8a68f77e71f8aff76
5
5
  SHA512:
6
- metadata.gz: 6d2c68b75b7a6b19bed5f1b4dc7fde749ab7355632433c9a982c2daa43e2b554aa40c29ccfef903e3071ace576680e06424b2303ae325201d807ae3b55f96a49
7
- data.tar.gz: f9fe60aa46e4be239a965d58063355823c12c046353226723b9edc93ab58f366b7a16800d61f1a28244dcc4b1cd7351c61a56d9da5a2fcff35b314ee3327d5c6
6
+ metadata.gz: 775560dc0091e06d95bbf45c9658c66834e774bf0c019da2f30d0e9ac25b644883568e09dba118ddb5a58baae262f41bb7af52ba6345e4b7d512df254913548d
7
+ data.tar.gz: 7eba27507c8ee929ea05dba4c845b995717429585d5b3b785b8cd4511353899688f484b3103371b26a94604b4d342b89d1c2fcd2731ddf90dc56466426b89b3d
@@ -12,7 +12,7 @@ Gem::Specification.new do |gem|
12
12
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
13
  gem.name = "fluent-plugin-kafka-enchanced"
14
14
  gem.require_paths = ["lib"]
15
- gem.version = '0.5.31'
15
+ gem.version = '0.5.32'
16
16
  gem.required_ruby_version = ">= 2.1.0"
17
17
 
18
18
  gem.add_dependency "fluentd", [">= 0.10.58", "< 2"]
@@ -180,7 +180,7 @@ DESC
180
180
  schema_id = registry.register("#{schema_name}-value", schema)
181
181
 
182
182
  stored_schema = {
183
- 'schema' => schema,
183
+ 'schema_json' => schema_json,
184
184
  'schema_id' => schema_id,
185
185
  'field_types' => field_types
186
186
  }
@@ -202,23 +202,52 @@ DESC
202
202
  require "avro/builder"
203
203
  init_redis
204
204
  Proc.new do |tag, time, record|
205
- record = record.select{|key, value| !key.nil? && !key.empty?}.map{|k, v| [k.tr('[]-', '_').delete('$'), ((!v.is_a?(Fixnum) && !v.is_a?(Float)) ? v.to_s.force_encoding("UTF-8") : v)]}.to_h
205
+ record = record.select{|key, value| !key.nil? && !key.empty?}.map do |k, v|
206
+ [
207
+ k.tr('[]-', '_').delete('$'),
208
+ (v.is_a?(Fixnum) || v.is_a?(Float) || v.nil? ? v : v.to_s.force_encoding("UTF-8"))
209
+ ]
210
+ end.to_h
206
211
  timestamp = Time.new
207
212
  record['enchilada_time_with_format'] = timestamp.strftime("%Y-%m-%dT%H:%M:%S.%LZ")
213
+ @topic_name = schema_name = "#{tag.to_s.tr('.$:', '_')}_#{Digest::MD5.new.hexdigest(record.keys.to_s)[0..5]}"
214
+
215
+ avro = AvroTurf::Messaging.new(registry_url: @schema_registry)
216
+
217
+ unless (stored_schema = get_schema_from_redis_by_name(schema_name))
218
+ fields = record.map do |key, value|
219
+ {
220
+ 'name' => key,
221
+ 'type' => ['null', (value.is_a?(Fixnum) ? 'int' : (value.is_a?(Float) ? 'float' : 'string'))]
222
+ }
223
+ end
224
+ field_types = fields.map{|field| [field['name'], (field['type'] - ['null']).first]}.to_h
225
+ fields << {"name" => "enchilada_timestamp", "type" => "long"}
226
+ schema_json = {
227
+ "type": "record",
228
+ "name": schema_name,
229
+ "fields": fields
230
+ }.to_json
231
+ registry = avro.instance_variable_get('@registry')
232
+ schema = Avro::Schema.parse(schema_json)
233
+ schema_id = registry.register("#{schema_name}-value", schema)
234
+
235
+ stored_schema = {
236
+ 'schema_json' => schema_json,
237
+ 'schema_id' => schema_id,
238
+ 'field_types' => field_types
239
+ }
240
+
241
+ set_schema_to_redis(schema_name, stored_schema)
242
+
243
+ end
208
244
 
209
- fields = record.map{|key, value| {'name' => key, 'type' => (value.is_a?(Fixnum) ? 'int' : (value.is_a?(Float) ? 'float' : 'string'))}}
210
245
  record['enchilada_timestamp'] = timestamp.strftime('%s%3N').to_i
211
- fields << {"name" => "enchilada_timestamp", "type" => "long"}
212
- @topic_name = schema_name = "#{tag.to_s.tr('.$:', '_')}_#{Digest::MD5.new.hexdigest(fields.to_s)[0..5]}"
213
- schema_json = {
214
- "type": "record",
215
- "name": schema_name,
216
- "fields": fields
217
- }.to_json
218
- schema = Avro::Schema.parse(schema_json)
246
+ record = record.map do |key, val|
247
+ [key, (stored_schema['field_types'][key] != 'string' || val.nil? ? val : val.to_s)]
248
+ end.to_h
219
249
 
220
- avro = AvroTurf::Messaging.new(registry_url: @schema_registry)
221
- avro.encode(record, schema: schema, subject: "#{schema_name}-value")
250
+ avro.encode(record, stored_schema['schema_id'], schema: Avro::Schema.parse(stored_schema['schema_json']))
222
251
  end
223
252
  elsif @output_data_type =~ /^attr:(.*)$/
224
253
  @custom_attributes = $1.split(',').map(&:strip).reject(&:empty?)
@@ -318,7 +347,7 @@ DESC
318
347
  parsed_schema = JSON.parse($redis.get(schema_name))
319
348
  {
320
349
  'schema_id' => parsed_schema['schema_id'],
321
- 'schema' => Avro::Schema.parse(parsed_schema['schema']),
350
+ 'schema_json' => Avro::Schema.parse(parsed_schema['schema_json']),
322
351
  'field_types' => parsed_schema['field_types']
323
352
  }
324
353
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-kafka-enchanced
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.31
4
+ version: 0.5.32
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paschenko Konstantin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-29 00:00:00.000000000 Z
11
+ date: 2017-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd