You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2008/03/10 22:54:28 UTC

svn commit: r635709 - in /mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver: FtpHandler.java command/QUIT.java listener/mina/FtpResponseEncoder.java listener/mina/MinaListener.java

Author: ngn
Date: Mon Mar 10 14:54:24 2008
New Revision: 635709

URL: http://svn.apache.org/viewvc?rev=635709&view=rev
Log:
Cleaning up some concurrency issues
* Removed the ExecutorFilter as it will cause race conditions when multiple commands is sent at once
* Removed all sync calls on write and  close

Modified:
    mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpHandler.java
    mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/QUIT.java
    mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java
    mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/MinaListener.java

Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpHandler.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpHandler.java?rev=635709&r1=635708&r2=635709&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpHandler.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpHandler.java Mon Mar 10 14:54:24 2008
@@ -58,8 +58,8 @@
     @Override
     public void exceptionCaught( IoSession session, Throwable cause ) throws Exception
     {
-        cause.printStackTrace();
-        session.closeOnFlush().awaitUninterruptibly(10000);
+    	LOG.error("Exception caught, closing session", cause);
+    	session.closeOnFlush();
     }
 
     @Override

Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/QUIT.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/QUIT.java?rev=635709&r1=635708&r2=635709&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/QUIT.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/command/QUIT.java Mon Mar 10 14:54:24 2008
@@ -45,8 +45,7 @@
         session.resetState();
         session.write(FtpReplyUtil.translate(session, request, context, FtpReply.REPLY_221_CLOSING_CONTROL_CONNECTION, "QUIT", null));
 		
-        session.closeOnFlush().awaitUninterruptibly(10000);
-        
+        session.closeOnFlush();
     }
 
 }

Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java?rev=635709&r1=635708&r2=635709&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java Mon Mar 10 14:54:24 2008
@@ -47,14 +47,5 @@
         
         buf.flip();
         out.write(buf);
-        
-        // 2007-10-26 - flushing the response, it is important to receive replies like 421 - service unavailable, see https://issues.apache.org/jira/browse/FTPSERVER-112
-        //WriteFuture future = out.flush();
-        
-        // TODO implement using listener?
-        //future.await(5000);
-        //if (!future.isWritten()) {
-        //	throw new FtpException("The response could not be sent for 5 seconds");
-        //}
     }
 }

Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/MinaListener.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/MinaListener.java?rev=635709&r1=635708&r2=635709&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/MinaListener.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/MinaListener.java Mon Mar 10 14:54:24 2008
@@ -21,9 +21,6 @@
 
 import java.io.IOException;
 import java.net.InetSocketAddress;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
 
 import org.apache.ftpserver.FtpHandler;
 import org.apache.ftpserver.interfaces.FtpServerContext;
@@ -33,7 +30,6 @@
 import org.apache.ftpserver.ssl.SslConfiguration;
 import org.apache.mina.common.IdleStatus;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
-import org.apache.mina.filter.executor.ExecutorFilter;
 import org.apache.mina.filter.logging.LoggingFilter;
 import org.apache.mina.filter.logging.MdcInjectionFilter;
 import org.apache.mina.filter.ssl.SslFilter;
@@ -57,8 +53,6 @@
     
     boolean suspended = false;
 
-    private ExecutorService filterExecutor = Executors.newCachedThreadPool();
-
     /**
      * @see Listener#start(FtpServerContext)
      */
@@ -85,9 +79,7 @@
                 "codec",
                 new ProtocolCodecFilter( new FtpServerProtocolCodecFactory() ) );
         
-        // dusable the session prefix as we now use MDC logging
-        acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
-        acceptor.getFilterChain().addLast("threadPool", new ExecutorFilter(filterExecutor));
+        acceptor.getFilterChain().addLast("logger", new LoggingFilter() );
         acceptor.getFilterChain().addLast("mdcFilter2", mdcFilter);
 
         
@@ -123,16 +115,6 @@
             acceptor.dispose();
             acceptor = null;
         }
-        
-        if(filterExecutor != null) {
-            filterExecutor.shutdown();
-            try {
-                filterExecutor.awaitTermination(5000, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-            } finally {
-//              TODO: how to handle?
-            }
-        }
     }
 
     /**
@@ -171,22 +153,4 @@
             acceptor.unbind(address);
         }
     }
-
-    /**
-     * Get the {@link ExecutorService} used for processing requests. The default
-     * value is a cached thread pool.
-     * @return The {@link ExecutorService}
-     */
-    public ExecutorService getFilterExecutor() {
-        return filterExecutor;
-    }
-
-    /**
-     * Set the {@link ExecutorService} used for processing requests
-     * @param filterExecutor The {@link ExecutorService}
-     */
-    public void setFilterExecutor(ExecutorService filterExecutor) {
-        this.filterExecutor = filterExecutor;
-    }
-
 }