[ 
https://issues.apache.org/jira/browse/FTPSERVER-461?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14218691#comment-14218691
 ] 

Ulrich Kohlhase commented on FTPSERVER-461:
-------------------------------------------

Hi Emmanuel,

As far as I can tell by looking at the Apache FtpServer v1.0.6 sources, the 
FtpHandlerAdapter class implements IoHandler and does not extend 
IoHandlerAdapter. Hence the exceptions (a lot) thrown when for example just 
closing the client FTP app (in my case Transmit for testing) without 
disconnecting from the FTP server. I've also noticed the same exceptions when 
trying to download multiple larger files at a time, and the FTP client app 
complained that the FTP command channel was closed:

ERROR org.apache.ftpserver.impl.DefaultFtpHandler  - Exception caught, closing 
session
WARN  org.apache.ftpserver.listener.nio.FtpLoggingFilter  - EXCEPTION :
AbstractMethodError: 
org.apache.ftpserver.listener.nio.FtpHandlerAdapter.inputClosed(Lorg/apache/mina/core/session/IoSession;)V
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.inputClosed(DefaultIoFilterChain.java:834)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.inputClosed(DefaultIoFilterChain.java:938)
  at 
org.apache.mina.core.filterchain.IoFilterAdapter.inputClosed(IoFilterAdapter.java:137)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.inputClosed(DefaultIoFilterChain.java:938)
  at 
org.apache.mina.core.filterchain.IoFilterAdapter.inputClosed(IoFilterAdapter.java:137)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.inputClosed(DefaultIoFilterChain.java:938)
  at 
org.apache.mina.core.filterchain.IoFilterAdapter.inputClosed(IoFilterAdapter.java:137)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.inputClosed(DefaultIoFilterChain.java:938)
  at 
org.apache.mina.core.filterchain.IoFilterAdapter.inputClosed(IoFilterAdapter.java:137)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.inputClosed(DefaultIoFilterChain.java:938)
  at 
org.apache.mina.core.filterchain.IoFilterAdapter.inputClosed(IoFilterAdapter.java:137)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.inputClosed(DefaultIoFilterChain.java:938)
  at 
org.apache.mina.core.filterchain.IoFilterAdapter.inputClosed(IoFilterAdapter.java:137)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireInputClosed(DefaultIoFilterChain.java:604)
  at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:729)
  at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:668)
  at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:657)
  at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:67)
  at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1121)
  at 
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
  at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  ... skipped 1 stack elements
ERROR org.apache.ftpserver.impl.DefaultFtpHandler  - Exception caught, closing 
session
WARN  org.apache.ftpserver.listener.nio.FtpLoggingFilter  - EXCEPTION :
AbstractMethodError: 
org.apache.ftpserver.listener.nio.FtpHandlerAdapter.inputClosed(Lorg/apache/mina/core/session/IoSession;)V
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.inputClosed(DefaultIoFilterChain.java:834)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.inputClosed(DefaultIoFilterChain.java:938)
  at 
org.apache.mina.core.filterchain.IoFilterAdapter.inputClosed(IoFilterAdapter.java:137)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.inputClosed(DefaultIoFilterChain.java:938)
  at 
org.apache.mina.core.filterchain.IoFilterAdapter.inputClosed(IoFilterAdapter.java:137)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.inputClosed(DefaultIoFilterChain.java:938)
  at 
org.apache.mina.core.filterchain.IoFilterAdapter.inputClosed(IoFilterAdapter.java:137)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.inputClosed(DefaultIoFilterChain.java:938)
  at 
org.apache.mina.core.filterchain.IoFilterAdapter.inputClosed(IoFilterAdapter.java:137)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.inputClosed(DefaultIoFilterChain.java:938)
  at 
org.apache.mina.core.filterchain.IoFilterAdapter.inputClosed(IoFilterAdapter.java:137)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.inputClosed(DefaultIoFilterChain.java:938)
  at 
org.apache.mina.core.filterchain.IoFilterAdapter.inputClosed(IoFilterAdapter.java:137)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
  at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireInputClosed(DefaultIoFilterChain.java:604)
  at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:729)
  at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:668)
  at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:657)
  at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:67)
  at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1121)
  at 
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
  at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  ... skipped 1 stack elements
ERROR org.apache.ftpserver.impl.DefaultFtpHandler  - Exception caught, closing 
session
INFO  org.apache.ftpserver.listener.nio.FtpLoggingFilter  - CLOSED


> FtpServer implement inputClosed() or extend IoHandlerAdapter for MINA 2.0.8 
> or higher
> -------------------------------------------------------------------------------------
>
>                 Key: FTPSERVER-461
>                 URL: https://issues.apache.org/jira/browse/FTPSERVER-461
>             Project: FtpServer
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 1.0.6
>            Reporter: Ulrich Kohlhase
>
> According to the Apache MINA release notes for v2.0.8:
> "There is one change that might break the build for those switching from MINA 
> 2.0.7 to MINA 2.0.8 : the IoHandler interface now has a method called 
> inputClosed(), so either you have to implement this method if you are 
> directly implementing the IoHandler interface, or better, you can extends 
> IoHandlerAdapter, which implements a placeholder for this method."
> ERROR org.apache.ftpserver.impl.DefaultFtpHandler  - Exception caught, 
> closing session
> WARN  org.apache.ftpserver.listener.nio.FtpLoggingFilter  - EXCEPTION :
> AbstractMethodError: 
> org.apache.ftpserver.listener.nio.FtpHandlerAdapter.inputClosed(Lorg/apache/mina/core/session/IoSession;)V
>   at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.inputClosed(DefaultIoFilterChain.java:834)
>   at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextInputClosed(DefaultIoFilterChain.java:611)
>   at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:48)
>   at 
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.inputClosed(DefaultIoFilterChain.java:938)
>   at 
> org.apache.mina.core.filterchain.IoFilterAdapter.inputClosed(IoFilterAdapter.java:137)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to