commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Guy Rouillier (JIRA)" <j...@apache.org>
Subject [jira] Commented: (NET-160) FTP Client API Hangs - Attached Scenario.
Date Thu, 12 Jun 2008 21:14:45 GMT

    [ https://issues.apache.org/jira/browse/NET-160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12604644#action_12604644
] 

Guy Rouillier commented on NET-160:
-----------------------------------

I found this issue because I encountered a problem when the server drops it's interface. We
are experiencing this problem in our network. To simulate, I'm running a server in VirtualBox.
Once a client initiates a file transfer using ftpCiient.retrieveFile, I disconnect the interface
via VirtualBox.

Regardless of what I setSoTimeout() to, the client hangs forever in this scenario.

Following Harry's suggestion, I tried setDataTimeout(). That seems to properly detect the
loss of the server connection:

org.apache.commons.net.io.CopyStreamException: IOException caught while copying.
        at org.apache.commons.net.io.Util.copyStream(Util.java:127)
        at org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1295

I'm confused, however, that the loss of the server connection didn't produce some sort of
basic socket or IO exception. Obviously, since I killed the server interface, all socket connections
to the server have been lost. Just hanging on retrieveFile() forever seems to be blatantly
the wrong thing to do. This actually seems like an issue for the basic socket implementation
more than it does for the Common Net layer.

> FTP Client API Hangs - Attached Scenario.
> -----------------------------------------
>
>                 Key: NET-160
>                 URL: https://issues.apache.org/jira/browse/NET-160
>             Project: Commons Net
>          Issue Type: Bug
>    Affects Versions: 1.4
>         Environment: Suse Enterprise Linux 9.0, Intel
>            Reporter: Lvenkataraman
>
> FTP client hangs with the following error.   Here is the truss output. The client hangs
indefinitely and no work is being done other than this error when you truss the process. 
I use Java 1.5 to run this.  We wrote a long-running ftp daemon and this happens after 20-23
hours of continuous running.
> Here is the code to pull files from the ftp server. This one lists files that are received
after this particular "incal" time (currently it lists but the intention is to implement an
incremental download).  We initially thought doing periodic noop would keep the client alive
by sending dummy commands to the server. But we found this probelm still occurs.
> public void ListIncrementalFiles (String directory, Calendar incal)
> 	{
> 		try 
> 		{
> 			FTPFile[] files = listFiles(directory);
> 			
> 			int total_files = 0;
> 					
> 			System.out.println("FileName\tFileSize\t\tDate Time Stamp");
> 			for (int i = 0; i < files.length; i++)
> 			{
> 												
> 					FTPFile file = files[i];
> 					if ((i % 1000) == 0)
> 					{
> 						System.out.println("noop occurred at this instance---> " + i + "\n");
> 						noop();
> 					}
> 							
> 					if (file.isFile())
> 					{
> 						Calendar c = file.getTimestamp();
> 												
> 						if (c.after(incal) || c.equals(incal))
> 						{
> 								
> 								System.out.println(file.getName() + "\t" + file.getSize() + "\t\t" + c.getTime());
> 								total_files++;
> 						}
> 					 }
>     				
> 			}
> 			System.out.println("Total Files in the listing ----> " + total_files);
> 		} 
> 		catch (Exception e)
> 		{
> 			System.out.println("FTP Getfiles exception occured");
> 			e.printStackTrace();
> 		}
>     
> 	}
> ---------------------------------------------------------------------------------------------------------------------------------Truss
output begins--------------------------------------------------------
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /6:	lwp_cond_wait(0x00035F08, 0x00035EF0, 0xB477FBE0, 0) Err#62 ETIME
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /9:	lwp_park(0x00000000, 0)		(sleeping...)
> /3:	lwp_cond_wait(0x000B77C0, 0x000B77A8, 0x00000000, 0) (sleeping...)
> /8:	lwp_cond_wait(0x0014A908, 0x0014A8F0, 0x00000000, 0) (sleeping...)
> /10:	lwp_cond_wait(0x000366E8, 0x000366D0, 0x00000000, 0) (sleeping...)
> /1:	pollsys(0x00000000, 0, 0xFFBFEB60, 0x00000000) (sleeping...)
> /11:	lwp_cond_wait(0x00036778, 0x00036760, 0x00000000, 0) (sleeping...)
> /4:	lwp_cond_wait(0x000B77C0, 0x000B77A8, 0x00000000, 0) (sleeping...)
> /12:	lwp_cond_wait(0x00036778, 0x00036760, 0x00000000, 0) (sleeping...)
> /2:	lwp_cond_wait(0x000B77C0, 0x000B77A8, 0x00000000, 0) (sleeping...)
> /7:	lwp_cond_wait(0x00149F98, 0x00149F80, 0x00000000, 0) (sleeping...)
> /5:	lwp_cond_wait(0x000B77C0, 0x000B77A8, 0x00000000, 0) (sleeping...)
> /13:	lwp_cond_wait(0x00034958, 0x00034940, 0x00000000, 0) (sleeping...)
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /6:	lwp_cond_wait(0x00035F08, 0x00035EF0, 0xB477FBE0, 0) Err#62 ETIME
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /6:	lwp_cond_wait(0x00035F08, 0x00035EF0, 0xB477FBE0, 0) Err#62 ETIME
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /6:	lwp_cond_wait(0x00035F08, 0x00035EF0, 0xB477FBE0, 0) Err#62 ETIME
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /6:	lwp_cond_wait(0x00035F08, 0x00035EF0, 0xB477FBE0, 0) Err#62 ETIME
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /6:	lwp_cond_wait(0x00035F08, 0x00035EF0, 0xB477FBE0, 0) Err#62 ETIME
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /6:	lwp_cond_wait(0x00035F08, 0x00035EF0, 0xB477FBE0, 0) Err#62 ETIME
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> /14:	pollsys(0x00000000, 0, 0xB3F7FC10, 0x00000000)	= 0
> ------------------------------------------------------------------------------------------Truss
output ends-------------------------------------------------------------------------------------------

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message