You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Andreas Veithen (Commented) (JIRA)" <ax...@ws.apache.org> on 2012/01/07 20:41:39 UTC

[jira] [Commented] (AXIS-2854) WSDD deployment getting stuck due to race condition in WSDDDeployableItem.

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

Andreas Veithen commented on AXIS-2854:
---------------------------------------

No, it's actually the following code in JavaUtils that needs to be fixed:

    public static boolean isEnumClass(Class cls) {
        Boolean b = (Boolean)enumMap.get(cls);
        if (b == null) {
            b = (isEnumClassSub(cls)) ? Boolean.TRUE : Boolean.FALSE;
            synchronized (enumMap) {
                enumMap.put(cls, b);
            }
        }
        return b.booleanValue();
    }

The access to enumMap is obviously not thread safe.
                
> WSDD deployment getting stuck due to race condition in WSDDDeployableItem.
> --------------------------------------------------------------------------
>
>                 Key: AXIS-2854
>                 URL: https://issues.apache.org/jira/browse/AXIS-2854
>             Project: Axis
>          Issue Type: Bug
>          Components: Deployment / Registries
>    Affects Versions: 1.3, 1.4
>         Environment: Weblogic 9.2, SunOS, JDK5
>            Reporter: Jaganmohan Reddy
>              Labels: deployment, stuck,, synchronized, threading, wsdd
>         Attachments: WSDDDeployableItem.java
>
>
> We can observe ExecuteThread: '1' and ExecuteThread: '2' are trying to do WSDDDeployment and got stuck at
> java.util.HashMap.get(HashMap.java:346). 
> More information regarding 'HashMap.get() can cause an infinite loop!'
>     http://mailinator.blogspot.com/2009/06/beautiful-race-condition.html
>     http://lightbody.net/blog/2005/07/hashmapget_can_cause_an_infini.html
> Servers need to be restarted or application has to be redeployed to complete the deployment.
> "[STUCK] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'"
> RUNNABLE
>         java.util.HashMap.get(HashMap.java:346)
>         org.apache.axis.utils.JavaUtils.isEnumClass(JavaUtils.java:1060)       
> org.apache.axis.encoding.ser.BeanSerializerFactory.init(BeanSerializerFactory.java:49)       
> org.apache.axis.encoding.ser.BeanSerializerFactory.<init>(BeanSerializerFactory.java:42)       
> org.apache.axis.encoding.ser.BaseSerializerFactory.createFactory(BaseSerializerFactory.java:235)       
> org.apache.axis.deployment.wsdd.WSDDDeployment.deployMapping(WSDDDeployment.java:286)       
> org.apache.axis.deployment.wsdd.WSDDDeployment.getTypeMappingRegistry(WSDDDeployment.java:462)       
> org.apache.axis.configuration.FileProvider.getTypeMappingRegistry(FileProvider.java:262)
>         org.apache.axis.AxisEngine.getTypeMappingRegistry(AxisEngine.java:348)       
> org.apache.axis.handlers.soap.SOAPService.setEngine(SOAPService.java:228)       
> org.apache.axis.deployment.wsdd.WSDDService.makeNewInstance(WSDDService.java:470)       
> org.apache.axis.deployment.wsdd.WSDDDeployableItem.getNewInstance(WSDDDeployableItem.java:274)       
> org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDeployableItem.java:260)       
> org.apache.axis.deployment.wsdd.WSDDDeployment.getService(WSDDDeployment.java:427)       
> org.apache.axis.configuration.FileProvider.getService(FileProvider.java:231)
>         org.apache.axis.AxisEngine.getService(AxisEngine.java:311)       
> org.apache.axis.MessageContext.setTargetService(MessageContext.java:755)
>         org.apache.axis.handlers.http.URLMapper.invoke(URLMapper.java:50)       
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
>         org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
>         org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
>         org.apache.axis.server.AxisServer.invoke(AxisServer.java:239)
>         org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:763)       
> org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:856)       
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)       
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)       
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)       
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)       
> weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3241)       
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)       
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)       
> weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2010)       
> weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1916)       
> weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1366)
>         weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
>         weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
>         "[STUCK] ExecuteThread: '1' for queue: 'weblogic.kernel.Default
> (self-tuning)'" RUNNABLE
>         java.util.HashMap.get(HashMap.java:346)
>         org.apache.axis.utils.JavaUtils.isEnumClass(JavaUtils.java:1060)       
> org.apache.axis.encoding.ser.BeanSerializerFactory.init(BeanSerializerFactory.java:49)       
> org.apache.axis.encoding.ser.BeanSerializerFactory.<init>(BeanSerializerFactory.java:42)       
> org.apache.axis.encoding.ser.BaseSerializerFactory.createFactory(BaseSerializerFactory.java:235)       
> org.apache.axis.deployment.wsdd.WSDDDeployment.deployMapping(WSDDDeployment.java:286)       
> org.apache.axis.deployment.wsdd.WSDDDeployment.getTypeMappingRegistry(WSDDDeployment.java:462)       
> org.apache.axis.configuration.FileProvider.getTypeMappingRegistry(FileProvider.java:262)
>         org.apache.axis.AxisEngine.getTypeMappingRegistry(AxisEngine.java:348)       
> org.apache.axis.handlers.soap.SOAPService.setEngine(SOAPService.java:228)       
> org.apache.axis.deployment.wsdd.WSDDService.makeNewInstance(WSDDService.java:470)       
> org.apache.axis.deployment.wsdd.WSDDDeployableItem.getNewInstance(WSDDDeployableItem.java:274)       
> org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDeployableItem.java:260)       
> org.apache.axis.deployment.wsdd.WSDDDeployment.getService(WSDDDeployment.java:427)       
> org.apache.axis.configuration.FileProvider.getService(FileProvider.java:231)
>         org.apache.axis.AxisEngine.getService(AxisEngine.java:311)       
> org.apache.axis.MessageContext.setTargetService(MessageContext.java:755)
>         org.apache.axis.handlers.http.URLMapper.invoke(URLMapper.java:50)       
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
>         org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
>         org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
>         org.apache.axis.server.AxisServer.invoke(AxisServer.java:239)
>         org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:763)       
> org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:856)       
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)       
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)       
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)       
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)       
> weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3241)       
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)       
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
>        weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2010)       
> weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1916)       
> weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1366)
>         weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
>         weblogic.work.ExecuteThread.run(ExecuteThread.java:181)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org