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 [EMAIL PROTECTED] ExecutorService} used for processing 
requests. The default
-     * value is a cached thread pool.
-     * @return The [EMAIL PROTECTED] ExecutorService}
-     */
-    public ExecutorService getFilterExecutor() {
-        return filterExecutor;
-    }
-
-    /**
-     * Set the [EMAIL PROTECTED] ExecutorService} used for processing requests
-     * @param filterExecutor The [EMAIL PROTECTED] ExecutorService}
-     */
-    public void setFilterExecutor(ExecutorService filterExecutor) {
-        this.filterExecutor = filterExecutor;
-    }
-
 }


Reply via email to