fluent-plugin-fluent-plugin-json-size-limit 0.1.15 → 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: 40f924059fcbebb4396efc9f677ffe7dd8b2d846a6b408c27023c604f5ac4eb7
4
- data.tar.gz: 1f4ff05c3488fd48d1aacb5f1bf6f8087bb90d65e342f8569ca2590c2282594d
3
+ metadata.gz: 101a8797e2c88b1200807388e3f970a636444d1ac8822b0eec251f3d6483b362
4
+ data.tar.gz: 988af4fe02e3fd6e83ecf19351885638e528a6e074817dd3a5cd4c6b532d1f17
5
5
  SHA512:
6
- metadata.gz: 118f7e2a31f67b792ad4b0470be2a783e4dcfa6a15330d6cf6af074e7f3fe3dac7ff0e6057edc0f425bd73bce5b7ca2d2b6f2162e58e3d400e6ebaa1ea2e255d
7
- data.tar.gz: 01e25d11c7efea63c48d34e95b6ebba689d7793568c5910a2395212284a69a25c8706322579ed58f86fb8399f20afe997f8c52c66f7f9cbbb6de46183e09051c
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.15"
6
+ spec.version = "0.1.16"
7
7
  spec.authors = ["Mykola Panin"]
8
8
  spec.email = ["mykola.panin@creatoriq.com"]
9
9
 
@@ -32,23 +32,31 @@ module Fluent
32
32
  json_str = record.to_json
33
33
 
34
34
  if json_str.bytesize > @max_size
35
- sorted_fields = record.sort_by { |k, v| v.to_s.length }.reverse
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
36
39
 
37
- sorted_fields.each do |key, value|
38
- 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
39
42
 
40
- current_size = json_str.bytesize
41
- excess_size = current_size - @max_size
43
+ current_size = json_str.bytesize
44
+ excess_size = current_size - @max_size
42
45
 
43
- new_length = [value.length - excess_size, 0].max
44
- record[key] = value[0...new_length]
45
- json_str = record.to_json
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
+ end
46
53
 
47
- break if json_str.bytesize <= @max_size
54
+ break unless reduced
55
+ attempts += 1
48
56
  end
49
57
 
50
58
  final_size = json_str.bytesize
51
- log.debug "Reduced record size from #{original_size} to #{final_size} bytes"
59
+ log.debug "Reduced record size from #{original_size} to #{final_size} bytes" if original_size != final_size
52
60
  end
53
61
 
54
62
  record
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.15
4
+ version: 0.1.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mykola Panin