fluent-plugin-fluent-plugin-json-size-limit 0.1.12 → 0.1.14
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:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 5c1f2e6ac036ba52dfd968b14d7596f477a47453d7944244787a374772b3eb09
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: ce671aa6d8e8e3d0efa565f82a57689308347bd61e5ef34acccda2cdd403e6f3
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 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. 
     | 
| 
      
 6 
     | 
    
         
            +
              spec.version = "0.1.14"
         
     | 
| 
       7 
7 
     | 
    
         
             
              spec.authors = ["Mykola Panin"]
         
     | 
| 
       8 
8 
     | 
    
         
             
              spec.email   = ["mykola.panin@creatoriq.com"]
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
         @@ -20,13 +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
         
     | 
| 
      
 27 
     | 
    
         
            +
                    log.debug "Configuring JsonSizeLimitFilter with max_size: #{@max_size}"
         
     | 
| 
       25 
28 
     | 
    
         
             
                  end
         
     | 
| 
       26 
29 
     | 
    
         | 
| 
       27 
30 
     | 
    
         
             
                  def filter(tag, time, record)
         
     | 
| 
       28 
31 
     | 
    
         
             
                    json_str = record.to_json
         
     | 
| 
       29 
     | 
    
         
            -
                     
     | 
| 
      
 32 
     | 
    
         
            +
                    log.debug "Original record size: #{json_str.bytesize} bytes"
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                    while json_str.bytesize > @max_size
         
     | 
| 
       30 
35 
     | 
    
         
             
                      sorted_fields = record.sort_by { |k, v| v.to_s.length }.reverse
         
     | 
| 
       31 
36 
     | 
    
         
             
                      reduced = false
         
     | 
| 
       32 
37 
     | 
    
         | 
| 
         @@ -34,24 +39,26 @@ module Fluent 
     | 
|
| 
       34 
39 
     | 
    
         
             
                        next unless value.is_a?(String) && value.length > 10
         
     | 
| 
       35 
40 
     | 
    
         | 
| 
       36 
41 
     | 
    
         
             
                        current_size = json_str.bytesize
         
     | 
| 
       37 
     | 
    
         
            -
                         
     | 
| 
       38 
     | 
    
         
            -
                        excess_size = current_size - target_size
         
     | 
| 
      
 42 
     | 
    
         
            +
                        excess_size = current_size - @max_size
         
     | 
| 
       39 
43 
     | 
    
         | 
| 
       40 
44 
     | 
    
         
             
                        new_length = [value.length - excess_size, 0].max
         
     | 
| 
       41 
45 
     | 
    
         
             
                        record[key] = value[0...new_length]
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
46 
     | 
    
         
             
                        json_str = record.to_json
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                        if json_str.bytesize <= @max_size
         
     | 
| 
      
 49 
     | 
    
         
            +
                          log.debug "Reduced size of field '#{key}'"
         
     | 
| 
       45 
50 
     | 
    
         
             
                          reduced = true
         
     | 
| 
       46 
51 
     | 
    
         
             
                          break
         
     | 
| 
       47 
52 
     | 
    
         
             
                        end
         
     | 
| 
       48 
53 
     | 
    
         
             
                      end
         
     | 
| 
       49 
54 
     | 
    
         | 
| 
       50 
55 
     | 
    
         
             
                      break unless reduced
         
     | 
| 
      
 56 
     | 
    
         
            +
                      log.debug "Intermediate record size: #{json_str.bytesize} bytes"
         
     | 
| 
       51 
57 
     | 
    
         
             
                    end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                    log.debug "Final record size: #{json_str.bytesize} bytes"
         
     | 
| 
       52 
60 
     | 
    
         
             
                    record
         
     | 
| 
       53 
61 
     | 
    
         
             
                  end
         
     | 
| 
       54 
62 
     | 
    
         
             
                end
         
     | 
| 
       55 
63 
     | 
    
         
             
              end
         
     | 
| 
       56 
64 
     | 
    
         
             
            end
         
     | 
| 
       57 
     | 
    
         
            -
             
     |