You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Karl Pauls (JIRA)" <ji...@apache.org> on 2017/02/24 12:26:44 UTC

[jira] [Closed] (FELIX-3496) URLHandlers deadlock in jnlp context

     [ https://issues.apache.org/jira/browse/FELIX-3496?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Karl Pauls closed FELIX-3496.
-----------------------------
    Resolution: Fixed

> URLHandlers deadlock in jnlp context
> ------------------------------------
>
>                 Key: FELIX-3496
>                 URL: https://issues.apache.org/jira/browse/FELIX-3496
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-4.0.2
>         Environment: oracle jre 1.6.0_31 x64 @ windows
>            Reporter: Andrei Pozolotin
>            Assignee: Karl Pauls
>         Attachments: dead_lock_0.txt, dead_lock_1.txt, dead_lock_2.txt, dead_lock_3.txt, dead_lock_4.txt, dead_lock_5.txt
>
>
> 1) we are seeing URLHandlers deadlock in jnlp context
> 2) this happens:
> * in jnlp mode only (can not reproduce in non-jnlp)
> * with frequency 1:10
> * with multiple threads, both internal-felix-related and external-embedder-host-related
> doing heavy downloading of url resources;
> 3) seeming problem area is here:
> http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/URLHandlers.java?view=markup
>     public static Object getFrameworkFromContext()
>     {
>         // This is a hack. The idea is to return the only registered framework
>         synchronized (m_classloaderToFrameworkLists)
>         {
>             if (m_classloaderToFrameworkLists.isEmpty())
>             {
>                 synchronized (m_frameworks)
>                 {
>                     if ((m_counter == 1) && (m_frameworks.size() == 1))
>                     {
>                         return m_frameworks.get(0);
>                     }
>                 }
>             }
>         }
> 4) stack traces attached
> 5) the workaround is to disable URLHandlers service via
> config.put("felix.service.urlhandlers", "false");



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)