[
https://issues.apache.org/jira/browse/DIRMINA-1093?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jonathan Valliere updated DIRMINA-1093:
---------------------------------------
Fix Version/s: (was: 2.0.23)
> 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, 2.0.18, 2.0.19
> Environment: Applicable to all platforms
> Reporter: Yogesh Gaikwad
> Priority: Major
> Labels: easyfix
> Attachments: DIRMINA-1093.patch
>
>
> 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
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]