seven_zip_ruby icon indicating copy to clipboard operation
seven_zip_ruby copied to clipboard

Parallel extract many files: Invalid file format (indefinite bug)

Open georgy7 opened this issue 10 years ago • 1 comments

I use Webrick with seven_zip_ruby to open archieved items right in browser. Almost all files extract well, but a few cause 500 HTTP code on Webrick. When I open these files separately in browser, they are opened. The count of badly opened files less if I do sleep rand in the servlet.

[2015-04-12 22:10:06] ERROR StandardError: Invalid file format. extract
        C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/seven_zip_ruby-1.2.4-x64-mingw32/lib/seven_zip_ruby/seven_zip_reader.rb:454:in `extract_impl'
        C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/seven_zip_ruby-1.2.4-x64-mingw32/lib/seven_zip_ruby/seven_zip_reader.rb:454:in `block in extract_data'
        C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/seven_zip_ruby-1.2.4-x64-mingw32/lib/seven_zip_ruby/seven_zip_reader.rb:524:in `block in synchronize'
        C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/seven_zip_ruby-1.2.4-x64-mingw32/lib/seven_zip_ruby/seven_zip_reader.rb:523:in `synchronize'
        C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/seven_zip_ruby-1.2.4-x64-mingw32/lib/seven_zip_ruby/seven_zip_reader.rb:523:in `synchronize'
        C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/seven_zip_ruby-1.2.4-x64-mingw32/lib/seven_zip_ruby/seven_zip_reader.rb:453:in `extract_data'

georgy7 avatar Apr 12 '15 19:04 georgy7

def gete(entry, tries = 60)
  begin
    return @reader.extract_data(entry)
  rescue
    return nil if tries <= 0
    sleep 1 + 1 * rand
    return gete entry, tries - 1
  end
end

But I think, it just hides symptoms of the problem.

georgy7 avatar Apr 12 '15 20:04 georgy7