mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Lecharny (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DIRMINA-1093) Ignore SME just like CNFE while checking deadlock in DefaultIoFuture
Date Mon, 10 Sep 2018 09:41:00 GMT

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

Emmanuel Lecharny commented on DIRMINA-1093:
--------------------------------------------

Sounds like a reasonable suggestion.

I guess the previous loop ( {{"Simple and quick check"}} ) should be impacted too.

Could you provide a patch and attach it to the JIRA ?

Many thanks !

> Ignore SME just like CNFE while checking deadlock in DefaultIoFuture
> --------------------------------------------------------------------
>
>                 Key: DIRMINA-1093
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-1093
>             Project: MINA
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.17, 3.0.0-M2, 2.0.19
>         Environment: Applicable to all platforms
>            Reporter: Yogesh Gaikwad
>            Priority: Major
>              Labels: easyfix
>
> The problem occurs when we have a security manager enabled with restrictions.
> After writing a request to [LdapNetworkConnection|https://github.com/apache/directory-ldap-api/blob/52129503d7f2247bad4a5f73b234023b8158ff07/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java#L4934],
we wait for the completion of the request. For every {code:java}writeFuture.awaitUninterruptibly{code}
it checks for deadlock [DefaultIoFuture|https://mina.apache.org/mina-project/apidocs/src-html/org/apache/mina/core/future/DefaultIoFuture.html]#checkDeadLock()
which is code that requires security permissions and throws following exception:
> {code:java}java.security.AccessControlException: access denied ("java.lang.RuntimePermission"
"accessClassInPackage.sun.reflect"){code}
> A proposed solution would be to ignore Java security manager exception (SME) similar
to Class not found exception(CNFE). For CNFE, we ignore the exception and continue as we are
just testing for deadlocks.
> {code:java}
> for (StackTraceElement s : stackTrace) {
>          try {
>                 Class<?> cls = DefaultIoFuture.class.getClassLoader().loadClass(s.getClassName());
>                 
>                 if (IoProcessor.class.isAssignableFrom(cls)) {
>                     throw new IllegalStateException("DEAD LOCK: " + IoFuture.class.getSimpleName()
>                             + ".await() was invoked from an I/O processor thread.  "
+ "Please use "
>                             + IoFutureListener.class.getSimpleName()
>                             + " or configure a proper thread model alternatively.");
>                 }
>             } catch (ClassNotFoundException cnfe) {
>                 // Ignore
>             }
>         }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message