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

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: 2f85063944aafffc112ca219ae7705c6c018a81b6e175485a251e65f17f3ae3d
4
- data.tar.gz: 4fe2c449138e030ec02aa7ede0165ca72639779b5c5808c01987d517e14e9e32
3
+ metadata.gz: 5c1f2e6ac036ba52dfd968b14d7596f477a47453d7944244787a374772b3eb09
4
+ data.tar.gz: ce671aa6d8e8e3d0efa565f82a57689308347bd61e5ef34acccda2cdd403e6f3
5
5
  SHA512:
6
- metadata.gz: c9601a42974d8b16e6a30f47dbc2b51b16a7036fc4eafac8ffcb031a412327cb4ad695c4ab37cd94446a8a7f7f5428917f6bcc52e0ad82b4dabbd910243ecc41
7
- data.tar.gz: c1f50d76c81a7dec05381f214c3eaad103930f6b17ac3b08c0a4285e3f3578e7af6604d4ffebafaa3b36929461602ce17d09c62726080df222477deaf62c3f72
6
+ metadata.gz: '0782af89ef48f11fcc72109ce021c6380000eeb37342710726182ca6cfcb22111e6abf4ea3e3f30e3ebb0b0d6e36e8e437800edd698ebfe514262202f4f9f7a4'
7
+ data.tar.gz: 98abef7edd4d61cc40b5d6840ecc3986316a05204aec1b8924abb94b040819127b330eafc451c05b65767c596bcb954392531b62be8f6f6002262045897364bd
@@ -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.13"
6
+ spec.version = "0.1.14"
7
7
  spec.authors = ["Mykola Panin"]
8
8
  spec.email = ["mykola.panin@creatoriq.com"]
9
9
 
@@ -20,15 +20,18 @@ module Fluent
20
20
  class JsonSizeLimitFilter < Filter
21
21
  Fluent::Plugin.register_filter('jsonsizelimit', self)
22
22
 
23
+ config_param :max_size, :size, default: 250 * 1024
24
+
23
25
  def configure(conf)
24
26
  super
25
- log.debug "Configuring JsonSizeLimitFilter"
27
+ log.debug "Configuring JsonSizeLimitFilter with max_size: #{@max_size}"
26
28
  end
27
29
 
28
30
  def filter(tag, time, record)
29
- log.debug "Original record: #{record.to_json.bytesize} bytes"
30
31
  json_str = record.to_json
31
- while json_str.bytesize > 250 * 1024
32
+ log.debug "Original record size: #{json_str.bytesize} bytes"
33
+
34
+ while json_str.bytesize > @max_size
32
35
  sorted_fields = record.sort_by { |k, v| v.to_s.length }.reverse
33
36
  reduced = false
34
37
 
@@ -36,23 +39,24 @@ module Fluent
36
39
  next unless value.is_a?(String) && value.length > 10
37
40
 
38
41
  current_size = json_str.bytesize
39
- target_size = 250 * 1024
40
- excess_size = current_size - target_size
42
+ excess_size = current_size - @max_size
41
43
 
42
44
  new_length = [value.length - excess_size, 0].max
43
45
  record[key] = value[0...new_length]
44
-
45
46
  json_str = record.to_json
46
- if json_str.bytesize <= 250 * 1024
47
+
48
+ if json_str.bytesize <= @max_size
49
+ log.debug "Reduced size of field '#{key}'"
47
50
  reduced = true
48
- log.debug "Reduced size of field '#{key}' to fit size limit"
49
51
  break
50
52
  end
51
53
  end
52
54
 
53
55
  break unless reduced
54
- log.debug "Record reduced: #{json_str.bytesize} bytes"
56
+ log.debug "Intermediate record size: #{json_str.bytesize} bytes"
55
57
  end
58
+
59
+ log.debug "Final record size: #{json_str.bytesize} bytes"
56
60
  record
57
61
  end
58
62
  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.13
4
+ version: 0.1.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mykola Panin