Bug with concurrent soap requests and aegis
-------------------------------------------

                 Key: XFIRE-773
                 URL: http://jira.codehaus.org/browse/XFIRE-773
             Project: XFire
          Issue Type: Bug
          Components: Aegis Module
    Affects Versions: 1.2.2
         Environment: win xp, jdk-1.5.0_06, apache-tomcat-5.5.17, spring-1.2.6, 
httpclient-3.0.1
            Reporter: Jose Dillet
         Assigned To: Dan Diephouse
         Attachments: testWS.war, WS Test.jmx

I'm getting some problems when I launch some concurrent requests to a web 
service made using xfire and spring.
I have a simple service (MyService) with a method (testService) that returns an 
object (MyObject).

I test it launching some concurrent requests using JMeter (jmeter -n -t "WS 
Test.jmx").

With this test, sometime I get the following exception:

2006-11-22 17:53:16,078  ERROR [org.codehaus.xfire.handler.DefaultFaultHandler] 
Fault occurred!
java.util.ConcurrentModificationException
        at 
java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
        at java.util.AbstractList$Itr.next(AbstractList.java:420)
        at 
org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:394)
        at 
org.codehaus.xfire.aegis.AegisBindingProvider.writeParameter(AegisBindingProvider.java:200)
        at 
org.codehaus.xfire.service.binding.AbstractBinding.writeParameter(AbstractBinding.java:273)
        at 
org.codehaus.xfire.service.binding.WrappedBinding.writeMessage(WrappedBinding.java:89)
        at 
org.codehaus.xfire.soap.SoapSerializer.writeMessage(SoapSerializer.java:80)
        at 
org.codehaus.xfire.transport.http.HttpChannel.writeWithoutAttachments(HttpChannel.java:56)
        at 
org.codehaus.xfire.transport.http.XFireServletChannel.sendViaServlet(XFireServletChannel.java:85)
        at 
org.codehaus.xfire.transport.http.XFireServletChannel.send(XFireServletChannel.java:44)
        at 
org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
        at 
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
        at 
org.codehaus.xfire.service.binding.PostInvocationHandler.invoke(PostInvocationHandler.java:36)
        at 
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
        at 
org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
        at 
org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
        at 
org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:301)
        at 
org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:130)
        at 
org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
        at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at 
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)

or, sometimes I get this other exception:

Fault occurred!
org.codehaus.xfire.XFireRuntimeException: Couldn't get property null from bean 
[EMAIL PROTECTED] Nested exception is java.lang.NullPointerException: null
java.lang.NullPointerException
        at 
org.codehaus.xfire.aegis.type.basic.BeanType.readProperty(BeanType.java:461)
        at 
org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:402)
        at 
org.codehaus.xfire.aegis.AegisBindingProvider.writeParameter(AegisBindingProvider.java:200)
        at 
org.codehaus.xfire.service.binding.AbstractBinding.writeParameter(AbstractBinding.java:273)
        at 
org.codehaus.xfire.service.binding.WrappedBinding.writeMessage(WrappedBinding.java:89)
        at 
org.codehaus.xfire.soap.SoapSerializer.writeMessage(SoapSerializer.java:80)
        at 
org.codehaus.xfire.transport.http.HttpChannel.writeWithoutAttachments(HttpChannel.java:56)
        at 
org.codehaus.xfire.transport.http.XFireServletChannel.sendViaServlet(XFireServletChannel.java:85)
        at 
org.codehaus.xfire.transport.http.XFireServletChannel.send(XFireServletChannel.java:44)
        at 
org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
        at 
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
        at 
org.codehaus.xfire.service.binding.PostInvocationHandler.invoke(PostInvocationHandler.java:36)
        at 
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
        at 
org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
        at 
org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
        at 
org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:301)
        at 
org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:130)
        at 
org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
        at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at 
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)

and sometimes it ends without any exception. Also, when I get an exception, and 
I try to access to wsdl file, sometimes I get another exception, or sometimes 
the definition of the object MyObject returned is wrong, because every field is 
repeated many times.

I guess that problem is related to aegis configuration, because if I delete 
file MyObject.aegis.xml, then I never get these errors. Unfortunately, not all 
executions end with an exception, but launching it several times leads to 
finally get some of these exceptions.

In testService I have added a sleep, to slow the execution of the method. In my 
real project, there is no sleep, but my service method is heavier, so I put the 
sleep to emulate the behaviour of my real service.

I attach a war with a complete test application, a a jmx file to test the 
application with JMeter (launching 30 concurrent threads)

Hope you can reproduce the bug.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email

Reply via email to