Weird deadlock between CXF and spring on WAS.
---------------------------------------------
Key: CXF-1839
URL: https://issues.apache.org/jira/browse/CXF-1839
Project: CXF
Issue Type: Bug
Components: JAX-WS Runtime
Affects Versions: 2.1.1
Environment: Windows XP, Ubuntu 7.04, jdk 1.5.0_09, CXF 2.1, spring
2.0.2, quartz 1.6.1, WAS 6.1
Reporter: Alton Idowu
We are using quartz to make periodic calls to different web services. Every
once in a while we get a deadlock that eventually crashes our WAS server. The
stack trace below does not make sense to me. it appears that worker-5 has a
lock on the LinkedHashMap containing the spring singleton beans that worker-7
is attempt to access in the synchronized configurebeans method. And worker -5
is waiting for worker-7 to exit the configurebeans method. I took a quick look
at the code and it didn't seem that worker-5 kept a reference. It would be
great if someone point us in the right direction to solve this.
Let me know if you require additional information....
Found one Java-level deadlock:
=============================
"clusteredScheduler_Worker-5":
waiting to lock monitor 0x0000000101f4a6b8 (object 0xfffffffed1c55700, a
org.apache.cxf.configuration.spring.ConfigurerImpl),
which is held by "clusteredScheduler_Worker-7"
"clusteredScheduler_Worker-7":
waiting to lock monitor 0x0000000101f4af40 (object 0xfffffffed1b36d20, a
java.util.LinkedHashMap),
which is held by "clusteredScheduler_Worker-5"
Java stack information for the threads listed above:
===================================================
"clusteredScheduler_Worker-5":
at
org.apache.cxf.configuration.spring.ConfigurerImpl.configureBean(ConfigurerImpl.java:93)
- waiting to lock <0xfffffffed1c55700> (a
org.apache.cxf.configuration.spring.ConfigurerImpl)
at
org.apache.cxf.configuration.spring.ConfigurerImpl.configureBean(ConfigurerImpl.java:88)
at
org.apache.cxf.transport.http.AbstractHTTPTransportFactory.configure(AbstractHTTPTransportFactory.java:223)
at
org.apache.cxf.transport.http.AbstractHTTPTransportFactory.getConduit(AbstractHTTPTransportFactory.java:163)
at
org.apache.cxf.transport.http.AbstractHTTPTransportFactory.getConduit(AbstractHTTPTransportFactory.java:145)
at
org.apache.cxf.endpoint.AbstractConduitSelector.getSelectedConduit(AbstractConduitSelector.java:73)
at
org.apache.cxf.endpoint.UpfrontConduitSelector.selectConduit(UpfrontConduitSelector.java:71)
at org.apache.cxf.endpoint.ClientImpl.getConduit(ClientImpl.java:468)
at
ilss.suidm.dao.ltc.service.LtcClientFactoryBean.create(LtcClientFactoryBean.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:102)
at
org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:275)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:727)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:679)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:388)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:250)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
- locked <0xfffffffed1b36d20> (a java.util.LinkedHashMap)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:247)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:161)
at
org.springframework.aop.target.LazyInitTargetSource.getTarget(LazyInitTargetSource.java:66)
- locked <0xfffffffed22b0bf0> (a
org.springframework.aop.target.LazyInitTargetSource)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:184)
at $Proxy2.processTransaction(Unknown Source)
at ilss.suidm.dao.ltc.LtcDAO.processTransaction(LtcDAO.java:80)
at
ilss.sysmonitor.delegate.SystemMonitoringDelegate.runSystemTestLTC(SystemMonitoringDelegate.java:544)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
ilss.common.reflect.ReflectionUtil.invokeMethod(ReflectionUtil.java:294)
at
ilss.common.reflect.ReflectionUtil.invokeMethodByForce(ReflectionUtil.java:73)
at
ilss.sysmonitor.delegate.SystemMonitoringDelegate.runSystemTests(SystemMonitoringDelegate.java:524)
at
ilss.common.cron.sysmonitor.BaseSysMonitorTestJobBean.executeJob(BaseSysMonitorTestJobBean.java:36)
at ilss.common.cron.BaseJobBean.executeInternal(BaseJobBean.java:37)
at
org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
"clusteredScheduler_Worker-7":
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.containsSingleton(DefaultSingletonBeanRegistry.java:164)
- waiting to lock <0xfffffffed1b36d20> (a java.util.LinkedHashMap)
at
org.springframework.beans.factory.support.AbstractBeanFactory.containsLocalBean(AbstractBeanFactory.java:511)
at
org.springframework.beans.factory.support.AbstractBeanFactory.containsBean(AbstractBeanFactory.java:319)
at
org.springframework.context.support.AbstractApplicationContext.containsBean(AbstractApplicationContext.java:650)
at
org.apache.cxf.configuration.spring.ConfigurerImpl.configureBean(ConfigurerImpl.java:118)
- locked <0xfffffffed1c55700> (a
org.apache.cxf.configuration.spring.ConfigurerImpl)
at
org.apache.cxf.jaxws.ServiceImpl.configureObject(ServiceImpl.java:448)
at
org.apache.cxf.jaxws.ServiceImpl.configureObject(ServiceImpl.java:442)
at org.apache.cxf.jaxws.ServiceImpl.createPort(ServiceImpl.java:382)
at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:247)
at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:234)
at javax.xml.ws.Service.getPort(Service.java:40)
at
mil.dla.ide.glsc_ots.GLSCOTSIdeService.getGLSCOTSIdePort0(GLSCOTSIdeService.java:65)
at
ilss.dla.dao.service.DlaServiceClient.getPort(DlaServiceClient.java:89)
at
ilss.dla.dao.service.DlaServiceClient.getRequisitionStatusByReqNum(DlaServiceClient.java:78)
at ilss.dla.dao.DlaQueryDAO.getRequisitionsByReqNum(DlaQueryDAO.java:98)
at
ilss.sysmonitor.delegate.SystemMonitoringDelegate.runSystemTestDLA_WS(SystemMonitoringDelegate.java:569)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
ilss.common.reflect.ReflectionUtil.invokeMethod(ReflectionUtil.java:294)
at
ilss.common.reflect.ReflectionUtil.invokeMethodByForce(ReflectionUtil.java:73)
at
ilss.sysmonitor.delegate.SystemMonitoringDelegate.runSystemTests(SystemMonitoringDelegate.java:524)
at
ilss.common.cron.sysmonitor.BaseSysMonitorTestJobBean.executeJob(BaseSysMonitorTestJobBean.java:36)
at ilss.common.cron.BaseJobBean.executeInternal(BaseJobBean.java:37)
at
org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
Found 1 deadlock.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.