[ https://issues.apache.org/jira/browse/NET-419?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13098138#comment-13098138 ]
Bogdan Drozdowski commented on NET-419: --------------------------------------- Checking if the abort command was issued could be implemented the same way as the current NOOP sending, but it has a flow (just ilke the NOOP sending) - the listener classes that are registered on the transfers are called when bytes are transferred. This means that if we wait with sending the ABOR command until some bytes are received, we're defeating the purpose of the ABOR command itself. And if we send it immediately, we have synchronization problems. If we receive data often, then the ABOR will be sent not very long after calling the abort() method. If not (including slow or already disconnected servers), the method won't do nothing. So, sure, we may try it, but this fix won't be perfect. Maybe we could stop waiting for additional replies, so that each method that sends a command could have a synchronized block within which the command would be sent and one reply read. This way the BufferredReaders/Writers would be synchronized and other threads could send commands. This won't make the whole FTPClient thread-safe, but perhaps this would be enough for both the NOOP and ABOR to work properly during transfers. The drawback is that we're changing the behavious of some methods in an incompatible way. I'd look for synchronized line-wise readers and writers (probably outside of the Java core classes, perhaps even somewhere in Apache) and make command sending and reply parsing synchronized methods, this could fix our problems. Finding such classes is one thing. The FTP, FTPClient, FTPSClient and maybe other classes would have to be changed. Unfortunately, currently I don't have the time to look at this closer, but I'll look into the problem later. If you have any other ideas, share them! > Not possible to call FTPClient.abort() method correctly > ------------------------------------------------------- > > Key: NET-419 > URL: https://issues.apache.org/jira/browse/NET-419 > Project: Commons Net > Issue Type: Bug > Components: FTP > Affects Versions: 3.0 > Environment: java version "1.6.0_26" > Java(TM) SE Runtime Environment (build 1.6.0_26-b03) > Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode) > Linux cattie 2.6.38-10-generic #46-Ubuntu SMP Tue Jun 28 15:07:17 UTC 2011 > x86_64 x86_64 x86_64 GNU/Linux > Reporter: Tomas Mysik > > Unfortunately, it seems that there are difficulties of using FTPClient.abort() > method [1][2]. Also, it is really not clear how the abort() method should be > called/used at all - if from another thread (as I would expect) then there is > a problem with > thread-safety: FTPClient itself is not thread-safe so it means that some > custom lock/monitor must be used; but this lock will prevent calling abort() > on > the FTPClient while it is downloading/uploading file since file > upload/download > itself is blocking... > If I'm wrong and the abort() method works then an example in Javadoc would be > more than welcome. > Thanks a lot. > [1] > http://apache-commons.680414.n4.nabble.com/Net-FTPClient-abort-problem-td739542.html > [2] http://www.tikalk.com/java/forums/apache-ftp-client-abort-transfer -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira