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;
- }
-
}