[
https://issues.apache.org/jira/browse/NET-510?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sebb updated NET-510:
---------------------
Labels: (was: newbie)
> FTPSClient.storeFile() hangs indefinitely if network connection fails
> ---------------------------------------------------------------------
>
> Key: NET-510
> URL: https://issues.apache.org/jira/browse/NET-510
> Project: Commons Net
> Issue Type: Bug
> Components: FTP
> Affects Versions: 3.3
> Environment: Java 7, CentOS 6.4, commons.net 3.3
> Reporter: Joe Hammerbacher
> Priority: Blocker
>
> Background:
> I'm attempting to add some level of fault tolerance to an application that
> uses FTPSClient to transfer files. If the connection between the client and
> server fails, I'd like to capture the produced exception/return code, log the
> details, and attempt to reconnect/retry the transfer.
> What works:
> The retrieveFile() method. If the connection fails, (i.e. I disable the
> server's public interface), I receive a CopyStreamException caused by a
> SocketTimeoutException after the amount of time I specified as the timeout.
> Which makes sense if SO_TIMEOUT is getting set correctly...
> From the Javadocs:
> "Enable/disable SO_TIMEOUT with the specified timeout, in milliseconds. With
> this option set to a non-zero timeout, a read() call on the InputStream
> associated with this Socket will block for only this amount of time. If the
> timeout expires, a java.net.SocketTimeoutException is raised, though the
> Socket is still valid. The option must be enabled prior to entering the
> blocking operation to have effect. The timeout must be > 0. A timeout of zero
> is interpreted as an infinite timeout."
> What doesn't work (as expected):
> The storeFile() method. If I initiate a transfer via storeFile() and disable
> the NIC on the server, the storeFile() method blocks/hangs indefinitely
> without throwing any exceptions. I think that this is the result of nothing
> listening, on the client side, to the DataSocket, which makes sense because I
> don't think there is anything being sent back to the client over the
> DataSocket.
> So, it doesn't appear to be possible for the write() to ever timeout if the
> connection fails.
> Am I missing something?
> Thanks,
> Joe
--
This message was sent by Atlassian JIRA
(v6.1#6144)