class Fluent::Plugin::OSSOutput::GzipCommandCompressor

This class uses gzip command to compress chunks.

Public Instance Methods

compress(chunk, file) click to toggle source
# File lib/fluent/plugin/oss_compressor_gzip_command.rb, line 24
def compress(chunk, file)
  path = if @buffer_type == 'file'
           chunk.path
         else
           out = Tempfile.new('chunk-gzip-out-')
           out.binmode
           chunk.write_to(out)
           out.close
           out.path
         end

  res = system "gzip #{@command_parameter} -c #{path} > #{file.path}"

  unless res
    log.warn "failed to execute gzip command. Fallback to GzipWriter. status = #{$?}"
    begin
      file.truncate(0)
      gw = Zlib::GzipWriter.new(file)
      chunk.write_to(gw)
      gw.close
    ensure
      gw.close rescue nil
    end
  end

ensure
  out.close(true) rescue nil unless @buffer_type == 'file'
end
configure(conf) click to toggle source
Calls superclass method
# File lib/fluent/plugin/oss_compressor_gzip_command.rb, line 10
def configure(conf)
  super

  check_command('gzip')
end
content_type() click to toggle source
# File lib/fluent/plugin/oss_compressor_gzip_command.rb, line 20
def content_type
  'application/x-gzip'.freeze
end
ext() click to toggle source
# File lib/fluent/plugin/oss_compressor_gzip_command.rb, line 16
def ext
  'gz'.freeze
end