[ 
https://issues.apache.org/jira/browse/FTPSERVER-290?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Niklas Gustavsson updated FTPSERVER-290:
----------------------------------------

    Attachment: Test.java

> DefaultFtpStatistics throws NullPointerException when account login repeatdly
> -----------------------------------------------------------------------------
>
>                 Key: FTPSERVER-290
>                 URL: https://issues.apache.org/jira/browse/FTPSERVER-290
>             Project: FtpServer
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.0.0
>         Environment: Linux RedHat EL 2.6.9-42.ELsmp
>            Reporter: Ulysses Lee
>         Attachments: Test.java
>
>
>  When I write a Testcase to make a proformance test for Apache ftp server,
> and I only use ONE ftp account in many threads to upload different files, 
> then after about 10 users loged in,
> it throws exception:
>     
>     [2009-04-14 09:30:52,973] [WARN ] DefaultFtpHandler [[email protected]] 
> [125.88.130.8] - RequestHandler.service() 
> java.lang.NullPointerException 
>         at 
> java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:768) 
>         at 
> org.apache.ftpserver.impl.DefaultFtpStatistics$UserLogins.loginsFromInetAddress(DefaultFtpStatistics.java:90)
>  
>         at 
> org.apache.ftpserver.impl.DefaultFtpStatistics.getCurrentUserLoginNumber(DefaultFtpStatistics.java:259)
>  
>         at org.apache.ftpserver.command.impl.USER.execute(USER.java:152) 
>         at 
> org.apache.ftpserver.impl.DefaultFtpHandler.messageReceived(DefaultFtpHandler.java:169)
>  
>         at 
> org.apache.ftpserver.listener.nio.FtpHandlerAdapter.messageReceived(FtpHandlerAdapter.java:65)
> most likey a thread lock problem?
> My test case used Apache NET lib with FTP, it like:
> import java.io.BufferedInputStream;
> import java.io.File;
> import java.io.FileInputStream;
> import java.io.IOException;
> import java.io.InputStream;
> import org.apache.commons.net.ftp.FTP;
> import org.apache.commons.net.ftp.FTPClient;
> import org.apache.commons.net.ftp.FTPReply;
> public static void main(String[] args) {
>       starttime = System.currentTimeMillis();
>       final File f = new File("F:/WorkSpace/Hermes/Hermes.jar");
>       for (int i = 0; i < 300; i++) {
>               final int j = i;
>               new Thread() {
>                       public void run() {
>                               testUpload("user", "pass", f);
>                       }
>               }.start();
>       }
> }
> public static void testUpload(String username, String password, File 
> localFile) {
>       FTPClient ftp = new FTPClient();
>       try {
>               ftp.connect(server, port);
>               System.out.println("Connected to " + server + ".");
>               ftp.login(username, password);
>               int reply = ftp.getReplyCode();
>               if (!FTPReply.isPositiveCompletion(reply)) {
>                       ftp.disconnect();
>                       System.err.println("FTP server refused connection.");
>                       System.exit(1);
>               }
>               ftp.setFileType(FTP.BINARY_FILE_TYPE);
>               ftp.enterLocalActiveMode();
>               ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);
>               InputStream input = new FileInputStream(localFile);
>               BufferedInputStream bin = new BufferedInputStream(input);
>               boolean flag = ftp.storeFile(localFile.getName(), bin);
>               if (flag) {
>                       System.out.println("success! cost:<" + 
> (System.currentTimeMillis() - starttime)
>                                               + " ms>");
>               } else {
>                       System.out.println("fail! cost:<" + 
> (System.currentTimeMillis() - starttime)
>                                               + " ms>");
>               }
>               ftp.logout();
>       } catch (IOException e) {
>               e.printStackTrace();
>       } finally {
>               if (ftp.isConnected()) {
>                       try {
>                               ftp.disconnect();
>                       } catch (IOException ioe) {
>                       }
>               }
>       }
> }

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

Reply via email to