Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

SFTP::Foreign - lost connection on larger files

by karlpgmr (Novice)
on Mar 28, 2013 at 18:55 UTC ( [id://1026019]=perlquestion: print w/replies, xml ) Need Help??

karlpgmr has asked for the wisdom of the Perl Monks concerning the following question:

Hello, have been using SFTP:Foreign for a couple of years in a production environment; works great except on slightly larger files (50kb+, not MB) the connection fails consistently. This is copying files from AIX to a Windows FTP server. Any thoughts? Thank you for the help.

use Net::SFTP::Foreign my $sftp = Net::SFTP::Foreign->new($server, user => $prd_uid, password => $prd_pwd); $sftp->put($currfile, $allfile, conversion => 'unix2dos', append => 1)

Replies are listed 'Best First'.
Re: SFTP::Foreign - lost connection on larger files
by Mr. Muskrat (Canon) on Mar 29, 2013 at 15:49 UTC

    You might also check the network settings on both ends. The only time I've seen this happen was when we were transmitting files to hosts behind a microwave link that had a smaller MTU than the rest of the network. IIRC, we fixed it by making use of Path MTU Discovery.

      Thank you for your reply; per my infrastructure group: No microwave or wireless or anything with an MTU other than 1500 (default) exists between those boxes

      I'll proceed with debugging per salva; oddly enough, with initially adding the debug -1 parameter, it causes the previously failing transmit to be successful.

        Post the rest of the information I asked for anyway!
Re: SFTP::Foreign - lost connection on larger files
by salva (Canon) on Mar 29, 2013 at 11:00 UTC
    Post the details of your system: OS, perl, ssh and module versions. Then, activate debugging adding the following line to your script and post the output here also:
    $Net::SFTP::Foreign::debug = -1;

      Below is the information I can gather right now; oddly enough, when using the "debug = -1" parm, the file transfer is successful; therefore, I used "debug = ~(8|16|1024|2048)" from a previous post from you creating the below debug information; thanks again for the help.

      AIX 6100-07-01-1141

      perl, v5.10.0 built for aix

      openssh.base.client 5.8.0.6101

      20 20 20 20 56 41 47 56 37 32 30 30 30 30 30 37 37 36 30 30 20 30 30 3 +0 30 30 37 37 30 30 30 20 | VAGV720000077600 0000077000 30 47 31 0d 0a 50 30 33 42 57 42 20 36 38 34 38 30 30 30 30 30 54 37 3 +6 54 58 32 38 33 31 30 30 | 0G1..P03BWB 684800000T76TX283100 30 30 30 30 30 30 30 30 35 31 34 33 38 38 20 20 20 20 20 20 20 20 56 4 +1 47 56 37 32 30 30 30 30 | 00000000514388 VAGV720000 30 36 39 30 30 30 20 30 30 30 30 30 36 38 35 30 30 20 30 47 31 0d 0a 5 +0 30 33 42 57 42 20 36 38 | 069000 0000068500 0G1..P03BWB 68 34 38 30 30 30 30 30 54 37 36 54 58 32 38 33 31 30 30 30 30 30 30 30 3 +0 30 30 35 31 34 33 38 38 | 4800000T76TX28310000000000514388 20 20 20 20 20 20 20 20 56 41 47 56 37 32 30 30 30 30 30 34 30 31 30 3 +0 20 30 30 30 30 30 33 39 | VAGV720000040100 0000039 38 30 30 20 30 47 31 0d 0a 50 30 33 42 57 42 20 36 38 34 38 30 30 30 3 +0 30 54 37 36 54 58 32 38 | 800 0G1..P03BWB 684800000T76TX28 33 31 30 30 30 30 30 30 30 30 30 30 35 31 34 33 38 38 20 20 20 20 20 2 +0 20 20 56 41 47 56 37 32 | 310000000000514388 VAGV72 30 30 30 30 30 34 39 30 30 30 20 30 30 30 30 30 34 38 37 30 30 20 30 4 +7 31 0d 0a 50 30 33 34 57 | 0000049000 0000048700 0G1..P034W 42 20 36 38 34 38 30 30 30 30 30 30 30 30 30 35 37 20 20 20 20 20 20 2 +0 20 20 20 20 20 20 20 20 | B 684800000000057 20 20 20 20 20 20 20 20 30 30 30 36 34 33 31 38 30 30 20 30 30 30 36 3 +3 38 33 35 30 30 20 20 20 | 0006431800 0006383500 20 20 20 20 20 20 20 20 20 20 20 0d 0a 50 30 33 35 20 20 20 20 20 20 2 +0 20 20 20 20 20 20 20 20 | ..P035 20 20 30 30 30 30 35 38 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2 +0 20 20 30 30 30 36 34 33 | 000058 000643 31 38 30 30 20 30 30 30 36 33 38 33 35 30 30 20 20 20 30 34 2f 30 31 2 +0 31 33 3a 30 31 0d 0a | 1800 0006383500 04/01 13:01.. #29360262 1364850672.00000 put: writing block at offset 0, length 3276 +8 #29360262 1364850672.00000 _queue_msg: queueing msg len: 32790, code:6 +, id:7 ... [1] #29360262 1364850672.00000 _do_io: _do_io connected: 1 #29360262 1364850672.00000 _do_io: _do_io select(-,-,-, 0) #29360262 1364850672.00000 _do_io: _do_io write queue: 32794, syswrite +: 32768, max: 65536, $!: #29360262 1364850672.00000 _do_io: _do_io select(-,-,-, 0) #29360262 1364850672.00000 _do_io: _do_io write queue: 26, syswrite: 2 +6, max: 65536, $!: #29360262 1364850672.00000 _do_io: _do_io select(-,-,-, 0) #29360262 1364850672.00000 _do_io: _do_io select failed: #29360262 1364850672.00000 put: writing block at offset 32768, length +32768 #29360262 1364850672.00000 _queue_msg: queueing msg len: 32790, code:6 +, id:8 ... [2] #29360262 1364850672.00000 _do_io: _do_io connected: 1 #29360262 1364850672.00000 _do_io: _do_io select(-,-,-, 0) #29360262 1364850672.00000 _do_io: _do_io write queue: 32794, syswrite +: 16358, max: 65536, $!: #29360262 1364850672.00000 _do_io: _do_io select(-,-,-, 0) #29360262 1364850672.00000 _do_io: _do_io select failed: #29360262 1364850672.00000 _unix2dos: before unix2dos: data follows... #29360262 1364850672.00000 _unix2dos: before unix2dos: adjustment: , d +ata follows... #29360262 1364850672.00000 put: writing block at offset 65536, length +2047 #29360262 1364850672.00000 _queue_msg: queueing msg len: 2069, code:6, + id:9 ... [3] #29360262 1364850672.00000 _do_io: _do_io connected: 1 #29360262 1364850672.00000 _do_io: _do_io select(-,-,-, 0) #29360262 1364850672.00000 _do_io: _do_io write queue: 18509, syswrite +: undef, max: 65536, $!: Resource temporarily unavailable #29360262 1364850672.00000 _conn_lost: _conn_lost #29360262 1364850672.00000 _set_status: _set_status code: 7, str: Conn +ection lost #29360262 1364850672.00000 _set_error: _set_err code: 37, str: Connect +ion to remote server is broken #29360262 1364850672.00000 _get_msg: waiting for message... [3] #29360262 1364850672.00000 _do_io: _do_io connected: 0 #29360262 1364850672.00000 _conn_lost: _conn_lost #29360262 1364850672.00000 _get_msg: waiting for message... [3] #29360262 1364850672.00000 _do_io: _do_io connected: 0 #29360262 1364850672.00000 _conn_lost: _conn_lost #29360262 1364850672.00000 _get_msg: waiting for message... [3] #29360262 1364850672.00000 _do_io: _do_io connected: 0 #29360262 1364850672.00000 _conn_lost: _conn_lost #29360262 1364850672.00000 _queue_msg: queueing msg len: 10, code:4, i +d:10 ... [4] #29360262 1364850672.00000 _get_msg: waiting for message... [4] #29360262 1364850672.00000 _do_io: _do_io connected: 0 #29360262 1364850672.00000 _conn_lost: _conn_lost #29360262 1364850672.00000 _close: closing file handle, return: -, rid +: 31 + | 1 #29360262 1364850672.00000 DESTROY: Net::SFTP::Foreign::FileHandle=GLO +B(0x305c9c88)->DESTROY called (sftp: Net::SFTP::Foreign=HASH(0x304888 +08)) #29360262 1364850672.00000 _queue_msg: queueing msg len: 10, code:4, i +d:11 ... [5] #29360262 1364850672.00000 _get_msg: waiting for message... [5] #29360262 1364850672.00000 _do_io: _do_io connected: 0 #29360262 1364850672.00000 _conn_lost: _conn_lost #29360262 1364850672.00000 _close: closing file handle, return: -, rid +: 31 + | 1 pidx_bolr3_transmit_debug.sh: Failed to append file BOL3WBMPL.BCK Connection to remote server is broken at /u102/app/a2k/ge/bolr3/ge +_out/pidx_bolr3_transmit_debug.sh line 176. #29360262 1364850672.00000 _rel2abs: 'BOLALL3.DAT' --> '/wpl/test/BOLA +LL3.DAT' #29360262 1364850672.00000 _rel2abs: '/wpl/test/BOLALL3.DAT' --> '/wpl +/test/BOLALL3.DAT' #29360262 1364850672.00000 _queue_msg: queueing msg len: 30, code:17, +id:12 ... [6] #29360262 1364850672.00000 _get_msg: waiting for message... [6] #29360262 1364850672.00000 _do_io: _do_io connected: 0 #29360262 1364850672.00000 _conn_lost: _conn_lost #29360262 1364850672.00000 _set_status: _set_status code: 7, str: Conn +ection lost #29360262 1364850672.00000 _set_error: _set_err code: 37, str: Connect +ion to remote server stalled pidx_bolr3_transmit_debug.sh: Failed to append file BOLALL3.DAT Connection to remote server stalled at /u102/app/a2k/ge/bolr3/ge_o +ut/pidx_bolr3_transmit_debug.sh line 179. #29360262 1364850672.00000 _rel2abs: '/wpl' --> '/wpl' #29360262 1364850672.00000 _queue_msg: queueing msg len: 13, code:16, +id:13 ... [7] #29360262 1364850672.00000 _get_msg: waiting for message... [7] #29360262 1364850672.00000 _do_io: _do_io connected: 0 #29360262 1364850672.00000 _conn_lost: _conn_lost #29360262 1364850672.00000 _set_status: _set_status code: 7, str: Conn +ection lost #29360262 1364850672.00000 _set_error: _set_err code: 37, str: Connect +ion to remote server stalled pidx_bolr3_transmit_debug.sh: Failed to chdir back to base /wpl Connection to remote server stalled at /u102/app/a2k/ge/bolr3/ge_o +ut/pidx_bolr3_transmit_debug.sh line 187. #29360262 1364850673.00000 disconnect: Net::SFTP::Foreign=HASH(0x30488 +808)->disconnect called (ssh pid: 35848338) #29360262 1364850673.00000 _conn_lost: _conn_lost #29360262 1364850673.00000 DESTROY: Net::SFTP::Foreign=HASH(0x30488808 +)->DESTROY called (current pid: 29360262, disconnect_by_pid: ) #29360262 1364850673.00000 disconnect: Net::SFTP::Foreign=HASH(0x30488 +808)->disconnect called (ssh pid: 35848338) #29360262 1364850673.00000 _conn_lost: _conn_lost
        There was a recently resolved heisenbug on Net::SFTP::Foreign (in version 1.74_06) that is affecting your test, masking the real cause of the problem.

        Install the latest version of the module (1.75) that I have just uploaded to CPAN and re-run your testing script.

        BTW, you have not said which version of the module you are using!

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1026019]
Approved by herveus
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (4)
As of 2024-04-26 00:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found