Project

General

Profile

Actions

Bug #13141

closed

Spurious Net::FTPReplyError

Added by Phrogz (Gavin Kistner) over 7 years ago. Updated about 7 years ago.

Status:
Third Party's Issue
Target version:
-
ruby -v:
ruby 2.2.6p396 (2016-11-15 revision 56800) [x64-mingw32]
[ruby-core:79203]

Description

I have a script that downloads many files via FTP. ftp.getbinaryfile occasionally fails (about 7 times while downloading ~2000 files).

Here's the code:

Net::FTP.open(SITE) do |ftp|
  ftp.login USER, PASS
  ftp.passive = true
  dates_by_year.each do |year,dates|
    ftp.chdir(File.join(DIR,'_archive',year.to_s))
    regex = /\.#{Regexp.union *dates.map(&mashed_date)}/
    ftp.list.map(&FILENAMEFROMLIST).compact.grep(regex).sort.map do |file|
      unzipped = calculate_uncompressed(file)
      unless File.exists?(unzipped)
        $log.debug "...downloading archived #{file}"
        ftp.getbinaryfile(file)
        $log.debug "...unzipping local #{file}"
        `gzip.exe -d #{file}`
        $log.debug "...unzipped #{file}"
      end
    end
  end
end

Here's an excerpt from the logs when it fails (where line 166 is the getbinaryfile call above):

D, [2017-01-19T16:08:48.307731 #1828] DEBUG -- : ...downloading archived developerdownloads_26549.esw3cdc_S.201611041500-1800-98.gz
D, [2017-01-19T16:08:49.350458 #1828] DEBUG -- : ...unzipping local developerdownloads_26549.esw3cdc_S.201611041500-1800-98.gz
D, [2017-01-19T16:08:49.412917 #1828] DEBUG -- : ...unzipped developerdownloads_26549.esw3cdc_S.201611041500-1800-98.gz
D, [2017-01-19T16:08:49.412917 #1828] DEBUG -- : ...downloading archived developerdownloads_26549.esw3cdc_S.201611041500-1800-99.gz
C:/Ruby/lib/ruby/2.2.0/net/ftp.rb:979:in `parse227': 226 Transfer complete. 0 bytes transferred. 0 bps. (Net::FTPReplyError)
	from C:/Ruby/lib/ruby/2.2.0/net/ftp.rb:392:in `makepasv'
	from C:/Ruby/lib/ruby/2.2.0/net/ftp.rb:404:in `transfercmd'
	from C:/Ruby/lib/ruby/2.2.0/net/ftp.rb:489:in `block (2 levels) in retrbinary'
	from C:/Ruby/lib/ruby/2.2.0/net/ftp.rb:199:in `with_binary'
	from C:/Ruby/lib/ruby/2.2.0/net/ftp.rb:487:in `block in retrbinary'
	from C:/Ruby/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
	from C:/Ruby/lib/ruby/2.2.0/net/ftp.rb:486:in `retrbinary'
	from C:/Ruby/lib/ruby/2.2.0/net/ftp.rb:619:in `getbinaryfile'
	from E:/dashstats_importer/import_from_ftp.rb:166:in `block (3 levels) in download_archives'

Every time it fails is the exact same error message: ftp.rb:977:in 'parse227': 226 Transfer complete. 0 bytes transferred. 0 bps. (Net::FTPReplyError).

When I run the script again the download succeeds, and eventually fails on a different file. It is not a problem with the specific files.

This is on ruby 2.2.6p396 (2016-11-15 revision 56800) [x64-mingw32] running under Windows Server R2012 R2, 64-bit

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0