Skip to content

Commit

Permalink
fix: Improve ZstdCompressor implementation
Browse files Browse the repository at this point in the history
Signed-off-by: ddukbg <[email protected]>
  • Loading branch information
ddukbg committed Nov 2, 2024
1 parent 7e28a32 commit b1efca1
Showing 1 changed file with 27 additions and 7 deletions.
34 changes: 27 additions & 7 deletions lib/fluent/plugin/out_s3.rb
Original file line number Diff line number Diff line change
Expand Up @@ -632,20 +632,40 @@ def compress(chunk, tmp)
end

class ZstdCompressor < Compressor
require 'zstd-ruby'

DEFAULT_LEVEL = 3

def initialize(level = nil)
@level = level || DEFAULT_LEVEL
end

def ext
'zst'.freeze
end

def content_type
'application/x-zst'.freeze
end

def compress(chunk, tmp)
compressed_data = Zstd.compress(chunk.read, level: @level)
tmp.write(compressed_data)
rescue => e
log.warn "zstd compression failed: #{e.message}"
raise e
begin
original_data = chunk.read
log.debug "Original data size: #{original_data.bytesize}"

compressed = Zstd.compress(original_data, level: @level)
log.debug "Compressed data size: #{compressed.bytesize}"

tmp.binmode
bytes_written = tmp.write(compressed)
log.debug "Bytes written: #{bytes_written}"
tmp.flush
tmp.close
rescue => e
log.warn "zstd compression failed: #{e.message}"
log.warn e.backtrace.join("\n")
raise e
end
end
end

Expand Down

0 comments on commit b1efca1

Please sign in to comment.