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

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: 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