logstash/bin/pqcheck
Colin Surprenant 58d2a745bb added new PQ checking tool bin/pqcheck
rework output format

rework output format
2017-12-22 16:46:52 -05:00

31 lines
1.1 KiB
Ruby
Executable file

#!/usr/bin/env bin/ruby
DEFAULT_PQ_DIR = "data/queue/main"
argv0 = ARGV[0].to_s.strip
if argv0 == "-h" || argv0 == "--help"
puts("usage: pqcheck [PQ dir path]\n default [PQ dir path] is #{DEFAULT_PQ_DIR}")
exit(0)
end
dir = argv0.empty? ? DEFAULT_PQ_DIR : argv0
if (!Dir.exist?(dir))
puts("error: invalid PQ dir path: #{dir}")
exit(1)
end
puts("checking queue dir: #{dir}")
Dir.glob("#{dir}/checkpoint.*").sort_by { |x| x[/[0-9]+$/].to_i }.each do |checkpoint|
data = File.read(checkpoint)
if data.size == 33
version, page, firstUnackedPage, firstUnackedSeq, minSeq, elementCount, crc32 = data.unpack("nNNQ>Q>NN")
fa = firstUnackedSeq >= (minSeq + elementCount)
ps = File.exist?("#{dir}/page.#{page}") ? File.size("#{dir}/page.#{page}") : nil
print("#{File.basename(checkpoint)}, fully-acked: #{fa ? "YES" : "NO"}, page.#{page} size: #{ps ? ps : "NOT FOUND"}, ")
p(version: version, page: page, firstUnackedPage: firstUnackedPage, firstUnackedSeq: firstUnackedSeq, minSeq: minSeq, elementCount: elementCount, crc32: crc32)
else
puts("#{File.basename(checkpoint)}, invalid size: #{data.size} ")
end
end