fluent-plugin-fluent-plugin-json-size-limit 0.1.14 → 0.1.16

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
  SHA256:
3
- metadata.gz: 5c1f2e6ac036ba52dfd968b14d7596f477a47453d7944244787a374772b3eb09
4
- data.tar.gz: ce671aa6d8e8e3d0efa565f82a57689308347bd61e5ef34acccda2cdd403e6f3
3
+ metadata.gz: 101a8797e2c88b1200807388e3f970a636444d1ac8822b0eec251f3d6483b362
4
+ data.tar.gz: 988af4fe02e3fd6e83ecf19351885638e528a6e074817dd3a5cd4c6b532d1f17
5
5
  SHA512:
6
- metadata.gz: '0782af89ef48f11fcc72109ce021c6380000eeb37342710726182ca6cfcb22111e6abf4ea3e3f30e3ebb0b0d6e36e8e437800edd698ebfe514262202f4f9f7a4'
7
- data.tar.gz: 98abef7edd4d61cc40b5d6840ecc3986316a05204aec1b8924abb94b040819127b330eafc451c05b65767c596bcb954392531b62be8f6f6002262045897364bd
6
+ metadata.gz: d2e1f5bb268ec0c9f98f68c0d415eb9ffc96d0e60177505959542b293d45879d71775dfdc8a7f88f9f40980bb6881b3983ad69a4ca38662a0fe07011a301e7a6
7
+ data.tar.gz: e2cf6fd32e0cfdec8a391803f468b8534f76142fc230b1daa534b9b6ae17ddc322fac3c48a77e124767d6c6df16c66360b91c39b3f7ec363dd8653624b936033
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "fluent-plugin-fluent-plugin-json-size-limit"
6
- spec.version = "0.1.14"
6
+ spec.version = "0.1.16"
7
7
  spec.authors = ["Mykola Panin"]
8
8
  spec.email = ["mykola.panin@creatoriq.com"]
9
9
 
@@ -28,35 +28,37 @@ module Fluent
28
28
  end
29
29
 
30
30
  def filter(tag, time, record)
31
+ original_size = record.to_json.bytesize
31
32
  json_str = record.to_json
32
- log.debug "Original record size: #{json_str.bytesize} bytes"
33
33
 
34
- while json_str.bytesize > @max_size
35
- sorted_fields = record.sort_by { |k, v| v.to_s.length }.reverse
36
- reduced = false
34
+ if json_str.bytesize > @max_size
35
+ attempts = 0
36
+ while json_str.bytesize > @max_size && attempts < 10
37
+ reduced = false
38
+ sorted_fields = record.sort_by { |k, v| v.to_s.length }.reverse
37
39
 
38
- sorted_fields.each do |key, value|
39
- next unless value.is_a?(String) && value.length > 10
40
+ sorted_fields.each do |key, value|
41
+ next unless value.is_a?(String) && value.length > 10
40
42
 
41
- current_size = json_str.bytesize
42
- excess_size = current_size - @max_size
43
+ current_size = json_str.bytesize
44
+ excess_size = current_size - @max_size
43
45
 
44
- new_length = [value.length - excess_size, 0].max
45
- record[key] = value[0...new_length]
46
- json_str = record.to_json
47
-
48
- if json_str.bytesize <= @max_size
49
- log.debug "Reduced size of field '#{key}'"
50
- reduced = true
51
- break
46
+ if excess_size > 0
47
+ new_length = [value.length - excess_size, 0].max
48
+ record[key] = value[0...new_length]
49
+ json_str = record.to_json
50
+ reduced = true
51
+ end
52
52
  end
53
+
54
+ break unless reduced
55
+ attempts += 1
53
56
  end
54
57
 
55
- break unless reduced
56
- log.debug "Intermediate record size: #{json_str.bytesize} bytes"
58
+ final_size = json_str.bytesize
59
+ log.debug "Reduced record size from #{original_size} to #{final_size} bytes" if original_size != final_size
57
60
  end
58
61
 
59
- log.debug "Final record size: #{json_str.bytesize} bytes"
60
62
  record
61
63
  end
62
64
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-fluent-plugin-json-size-limit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.1.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mykola Panin