[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

lost response while transfering large file to FTP server

Clive Lin

1/4/2009 8:48:00 AM

When I used Net::FTP to put large files(about 200MB) to FTP server, the
program always lost response. The file was actually transferred
correctly later on, but the ftp.put method failed to return, preventing
the code after that method from executing. And the ruby process was not
terminated.

The ruby version is 1.8.6 on Ubuntu 8.10 64 bit server

Anyone know the problem?
--
Posted via http://www.ruby-....

4 Answers

Robert Klemme

1/4/2009 2:35:00 PM

0

On 04.01.2009 09:47, Clive Lin wrote:
> When I used Net::FTP to put large files(about 200MB) to FTP server, the
> program always lost response. The file was actually transferred
> correctly later on, but the ftp.put method failed to return, preventing
> the code after that method from executing. And the ruby process was not
> terminated.
>
> The ruby version is 1.8.6 on Ubuntu 8.10 64 bit server
>
> Anyone know the problem?

Maybe you executed it in a thread and that died silently. You can make
the error explicit if you like:

Robert@babelfish2 ~
$ irb
irb(main):001:0> t = Thread.new { raise "silent death" }
=> #<Thread:0x100106d4 dead>
irb(main):002:0> t.join
RuntimeError: silent death
from (irb):1
from (irb):2:in `join'
from (irb):2
from :0
irb(main):003:0> Thread.abort_on_exception = true
=> true
irb(main):004:0> t = Thread.new { raise "interpreter kill" }
(irb):4:in `irb_binding': interpreter kill (RuntimeError)
from (irb):4:in `initialize'
from (irb):4:in `new'
from (irb):4:in `irb_binding'
from /usr/lib/ruby/1.8/irb/workspace.rb:52:in `irb_binding'
from :0

Robert@babelfish2 ~
$ echo $?
1

Robert@babelfish2 ~
$

Kind regards

robert

Clive Lin

1/4/2009 3:14:00 PM

0

Thanks for reply.
I didn't create a new thread to do the ftp job; it's in main thread. I
think any exception will be throw to the console, but nothing happened.
And the file was actually transferred without any error I am aware of.
ftp.put just couldn't return.

I attach the source file.

Robert Klemme wrote:
> On 04.01.2009 09:47, Clive Lin wrote:
>> When I used Net::FTP to put large files(about 200MB) to FTP server, the
>> program always lost response. The file was actually transferred
>> correctly later on, but the ftp.put method failed to return, preventing
>> the code after that method from executing. And the ruby process was not
>> terminated.
>>
>> The ruby version is 1.8.6 on Ubuntu 8.10 64 bit server
>>
>> Anyone know the problem?
>
> Maybe you executed it in a thread and that died silently. You can make
> the error explicit if you like:
>
> Robert@babelfish2 ~
> $ irb
> irb(main):001:0> t = Thread.new { raise "silent death" }
> => #<Thread:0x100106d4 dead>
> irb(main):002:0> t.join
> RuntimeError: silent death
> from (irb):1
> from (irb):2:in `join'
> from (irb):2
> from :0
> irb(main):003:0> Thread.abort_on_exception = true
> => true
> irb(main):004:0> t = Thread.new { raise "interpreter kill" }
> (irb):4:in `irb_binding': interpreter kill (RuntimeError)
> from (irb):4:in `initialize'
> from (irb):4:in `new'
> from (irb):4:in `irb_binding'
> from /usr/lib/ruby/1.8/irb/workspace.rb:52:in `irb_binding'
> from :0
>
> Robert@babelfish2 ~
> $ echo $?
> 1
>
> Robert@babelfish2 ~
> $
>
> Kind regards
>
> robert


Attachments:
http://www.ruby-...attachment/3122...

--
Posted via http://www.ruby-....

Clive Lin

1/5/2009 1:41:00 AM

0

Clive Lin wrote:
> When I used Net::FTP to put large files(about 200MB) to FTP server, the
> program always lost response. The file was actually transferred
> correctly later on, but the ftp.put method failed to return, preventing
> the code after that method from executing. And the ruby process was not
> terminated.
>
> The ruby version is 1.8.6 on Ubuntu 8.10 64 bit server
>
> Anyone know the problem?

I replaced the ftp.put with the following code:
ftp_info=%x{
pftp -n #{FTP_HOST} <<SCRIPT
user #{FTP_USER} #{FTP_PWD}
put #{BACKUP_FILE}
quit
SCRIPT
}
$logger.info(ftp_info)
It still failed to return, without any logger information.
--
Posted via http://www.ruby-....

Clive Lin

1/5/2009 1:43:00 AM

0

Clive Lin wrote:

>
> I replaced the ftp.put with the following code:
> ftp_info=%x{
> pftp -n #{FTP_HOST} <<SCRIPT
> user #{FTP_USER} #{FTP_PWD}
> put #{BACKUP_FILE}
> quit
> SCRIPT
> }
> $logger.info(ftp_info)
> It still failed to return, without any logger information.

And at this time, the backup file still got transferred successfully
--
Posted via http://www.ruby-....