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

Goldstein Lyor commented on SSHD-625:
-------------------------------------

Good - I am working on adding some try-catch(es) and/or relaxing the catch from 
_Exception_ to _Throwable_ where it seems appropriate. _Error_(s) usually 
denote a totally unexpected condition and I agree that some effort should be 
made to ensure that the code recovers from them - if only by logging them. 
However, I am doing this "relaxation" only in places where a warning is issued 
or where user code is invoked (e.g., _PasswordAuthenticator#authenticate_). I 
do not feel comfortable catching _Throwable_(s) throughout the entire code and 
just logging them in DEBUG level since they can easily get overlooked.

> Use catch(Throwable) where possible to avoid stopping performing queries and 
> to log errors
> ------------------------------------------------------------------------------------------
>
>                 Key: SSHD-625
>                 URL: https://issues.apache.org/jira/browse/SSHD-625
>             Project: MINA SSHD
>          Issue Type: Bug
>    Affects Versions: 1.0.0
>            Reporter: Eugene Petrenko
>            Assignee: Goldstein Lyor
>            Priority: Minor
>
> There are several places in library source where you catch Exception to log 
> it. Not Throwable. But it may easily turn out any some Error is thrown from 
> user provided implementations.
> Here is incorrect catch: * 
> org.apache.sshd.server.config.keys.AuthorizedKeysAuthenticator#authenticate
> There is no catch at all in 
> * org.apache.sshd.server.auth.UserAuthKeyboardInteractive#doAuth
> * org.apache.sshd.server.channel.ChannelSession#handleRequest
> The problem is that once my code throws a Error (e.g. VerifyError or OOM) the 
> error goes strait into JVM internals without being explicitly logged. As a 
> side effect of that SSHD server stops functioning. Connections are accepted 
> but not being processed.
> My current workaround is to explicitly wrap all classes I implement with 
> try/catch. I believe it should be done inside the library to avoid everyone 
> from writing similar try-catch. I believe it's OK to forcibly close any 
> connection once exception was caught and logged



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

Reply via email to