I just updated to 3.5, and this file is consistently failing. I no longer receive the
250 Transfer completed successfully. 200 OK Replies. Log Snippet: 2016-11-17 12:56:33.870 - 100 Percent Complete, Total Bytes Transferred: 2101359588 File Transfer Failed at: 2016-11-17 12:56:38.885 Error Occurred Transmitting File to Remote System, aborting... Read timed out java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at java.net.SocketInputStream.read(Unknown Source) at sun.security.ssl.InputRecord.readFully(Unknown Source) at sun.security.ssl.InputRecord.read(Unknown Source) at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source) at sun.security.ssl.AppInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:313) at org.apache.commons.net.ftp.FTP.__getReplyNoReport(FTP.java:303) at org.apache.commons.net.ftp.FTPClient$CSL.cleanUp(FTPClient.java:3839) at org.apache.commons.net.ftp.FTPClient._storeFile(FTPClient.java:695) at org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:643) at org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:2034) at gov.nyc.ftputils.FTPConnection.sendFile(FTPConnection.java:695) at gov.nyc.ftputils.FTPPropertyProcessor.putFile(FTPPropertyProcessor.java:54) at gov.nyc.ftputils.FTPPropertyProcessor.putFile(FTPPropertyProcessor.java:96) at gov.nyc.ftputils.FTPPropertyProcessor.processFileProps(FTPPropertyProcessor.java:126) at gov.nyc.ftputils.FTPClientUtil.main(FTPClientUtil.java:378) FTPClientUtil has Failed QUIT 221 Quit command received. Goodbye. -----Original Message----- From: Seganti, Michael (DOF) [mailto:segan...@finance.nyc.gov] Sent: Thursday, November 17, 2016 12:34 PM To: Commons Users List Subject: RE: [net] FTPClient Transfer succeeds but fails in cleanUp I need to do a quick test prior to pushing to production, but yes, that's my next step. I didn't see anything that stood out in the release notes. It would make life easier if this was reproduceable... -----Original Message----- From: Gary Gregory [mailto:garydgreg...@gmail.com] Sent: Thursday, November 17, 2016 12:31 PM To: Commons Users List Subject: Re: [net] FTPClient Transfer succeeds but fails in cleanUp Can you try version 3.5? Gary On Thu, Nov 17, 2016 at 9:19 AM, Seganti, Michael (DOF) < segan...@finance.nyc.gov> wrote: > I'm having a sporadic issue transferring files to a Mainframe, was > wondering if anyone else has run into this. I'm trying to figure out > if this is a Mainframe issue, or a net commons issue. > > I'm using Java 1.7 and commons-net-3.3.jar > > The file transfer completes, but it looks like either the 200 OK is > sent over the wrong connection, or is not properly being parsed and is > causing the cleanup to fail. > > According to the reply: IBM FTP CS V2R2 is the version where the issue > occurs. > > I have a second mainframe that is running IBM FTP CS V1R13 that > doesn't seem to have this issue > > In a normal transfer, you would see: > > 250 Transfer completed successfully. > File Transfer Completed Successfully at: 2016-11-17 > 04:30:51.569 QUIT > 221 Quit command received. Goodbye. > > This is what we are getting on the failures: > > 250 Transfer completed successfully. > 200 OK > > File Transfer Failed at: 2016-11-17 04:36:50.246 Error Occurred > Transmitting File to Remote System, aborting... > > Read timed out > > Here's the full log from the failed transfer: > > Using FTPS Connection with Protocol: TLS and Explicit Security Request > 220-FTPSECR1 IBM FTP CS V2R2 at MVSP.XXX, 09:27:29 on 2016-11-17. > 220 Connection will close if idle for more than 5 minutes. > AUTH TLS > 234 Security environment established - ready for negotiation Connected > to mvsp.xxx on xxxx PBSZ 0 > 200 Protection buffer size accepted > PROT P > 200 Data connection protection set to private USER ******* > 331 Send password please. > PASS ******* > 230 C836PTS is logged on. Working directory is "C836PTS.". > PWD > 257 "'C836PTS.'" is working directory. > > Using a Packet Size of: 4096 > Control KeepAliveTimeOut: 60 > Control KeepAliveReplyTimeOut: 5000 > FEAT > 211- Extensions supported > AUTH TLS > PBSZ > PROT > 211 End > > ...FTPClientUtil Connected Successfully! > SITE TRAIL > 200 SITE command was accepted > SITE CYLINDERS PRIMARY=2100 SECONDARY=250 > 200 SITE command was accepted > SITE RECFM=FB LRECL=1915 BLKSIZE=30640 > 200 SITE command was accepted > SITE CONDDISP=delete > 200 SITE command was accepted > > > Sending: > Local: d:\LargeExtracts\full.txt > Remote: 'A836.ORG.CAMA2.FULL' > Starting at: 2016-11-17 09:27:34.798 Total Bytes To > Send: 2101359588 PASV > 227 Entering Passive Mode (xx,xx,x,xx,xx,xx) STOR > 'A836.ORG.CAMA2.FULL' > 125 Storing data set A836.ORG.CAMA2.FULL > 2016-11-17 09:27:47.721 - 5 Percent Complete, Total Bytes Transferred: > 105070592 > 2016-11-17 09:28:01.190 - 10 Percent Complete, Total Bytes Transferred: > 210137088 > ... > 2016-11-17 09:32:21.127 - 100 Percent Complete, Total Bytes Transferred: > 2101359588 > 250 Transfer completed successfully. > 200 OK > > File Transfer Failed at: 2016-11-17 09:32:26.127 Error > Occurred Transmitting File to Remote System, aborting... > > Read timed out > java.net.SocketTimeoutException: Read timed out > at java.net.SocketInputStream.socketRead0(Native Method) > at java.net.SocketInputStream.read(Unknown Source) > at java.net.SocketInputStream.read(Unknown Source) > at sun.security.ssl.InputRecord.readFully(Unknown Source) > at sun.security.ssl.InputRecord.read(Unknown Source) > at sun.security.ssl.SSLSocketImpl.readRecord(Unknown > Source) > at > sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown > Source) > at sun.security.ssl.AppInputStream.read(Unknown Source) > at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) > at sun.nio.cs.StreamDecoder.implRead(Unknown Source) > at sun.nio.cs.StreamDecoder.read(Unknown Source) > at java.io.InputStreamReader.read(Unknown Source) > at java.io.BufferedReader.fill(Unknown Source) > at java.io.BufferedReader.readLine(Unknown Source) > at java.io.BufferedReader.readLine(Unknown Source) > at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:314) > at org.apache.commons.net.ftp.FTP.__getReplyNoReport(FTP. > java:304) > at org.apache.commons.net.ftp.FTPClient$CSL.cleanUp( > FTPClient.java:3697) > at org.apache.commons.net.ftp.FTPClient._storeFile( > FTPClient.java:669) > at org.apache.commons.net.ftp.FTPClient.__storeFile( > FTPClient.java:624) > at org.apache.commons.net.ftp. > FTPClient.storeFile(FTPClient.java:1976) > at gov.nyc.ftputils.FTPConnection.sendFile( > FTPConnection.java:695) > at gov.nyc.ftputils.FTPPropertyProcessor.putFile( > FTPPropertyProcessor.java:54) > at gov.nyc.ftputils.FTPPropertyProcessor.putFile( > FTPPropertyProcessor.java:96) > at > gov.nyc.ftputils.FTPPropertyProcessor.processFileProps( > FTPPropertyProcessor.java:126) > at gov.nyc.ftputils.FTPClientUtil.main( > FTPClientUtil.java:378) > FTPClientUtil has Failed > QUIT > 221 Quit command received. Goodbye. > > > Here's a code snippet of the transfer code: > > try{ > if (trace){ > > System.out.println("Total Bytes To Send: " + localFile.length()); > CopyStreamListener > listener = new ProgressStreamListener(localFile.length()); > > ftp.setCopyStreamListener( listener); > } > > InputStream input = new FileInputStream(localFileName); > boolean result = ftp.storeFile(tempRemoteFileName, input); > input.close(); > > if (result){ > System.out.println("\tFile Transfer > Completed Successfully at: " + sdf.format(Calendar. > getInstance().getTime())); > ... > } > else > System.out.println("\tFile Transfer > Failed > at: " + sdf.format(Calendar.getInstance().getTime())); > > return result; > }catch (CopyStreamException cse){ > System.err.println("\n\tFile Transfer Failed at: " + > sdf.format(Calendar.getInstance().getTime()) + ", Failure occurred > after " + cse.getTotalBytesTransferred() + " Bytes Transferred"); > System.err.println("Error Occurred Transmitting File > to Remote System, aborting...\n"); > cse.printStackTrace(System.err); > System.err.println("\n\nIOException Stack Trace that > Caused the Error:\n"); > cse.getIOException().printStackTrace(System.err); > return false; > }catch (IOException ioe){ > System.err.println("\n\tFile Transfer Failed at: " + sdf.format(Calendar. > getInstance().getTime())); > System.err.println("Error Occurred Transmitting File > to Remote System, aborting...\n"); > System.err.println(ioe.getMessage()); > ioe.printStackTrace(System.err); > return false; > }catch (Exception e){ > System.err.println("\n\tFile Transfer Failed at: " + > sdf.format(Calendar.getInstance().getTime())); > System.err.println("Error Occurred Transmitting File > to Remote System, aborting...\n"); > e.printStackTrace(System.err); > return false; > } > } > > > Thanks, > > Mike... > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org Java Persistence with Hibernate, Second Edition <https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1617290459> JUnit in Action, Second Edition <https://www.amazon.com/gp/product/1935182021/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182021> Spring Batch in Action <https://www.amazon.com/gp/product/1935182951/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182951> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory