You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Marc Giger (JIRA)" <ji...@apache.org> on 2008/04/30 11:36:56 UTC

[jira] Created: (CXF-1560) EndpointReferenceUtils.getSchema threading issue

EndpointReferenceUtils.getSchema threading issue
------------------------------------------------

                 Key: CXF-1560
                 URL: https://issues.apache.org/jira/browse/CXF-1560
             Project: CXF
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.0.6
            Reporter: Marc Giger
         Attachments: cxf-2.0.6-threading-issue.patch

After the first time the service is started and the service is invoked in parallel with multiple threads I get the following
stacktrace and the service returns a soap-fault:

30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
INFO: Interceptor has thrown exception, unwinding now
java.lang.ArrayIndexOutOfBoundsException: 2 >= 0
        at java.util.Vector.elementAt(Vector.java:427)
        at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
        at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
        at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
        at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeChoice(XmlSchemaSerializer.java:1229)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:917)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
        at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
        at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
        at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
        at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
        at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
        at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
        at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
        at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
        at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
        at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
        at org.apache.cxf.transport.local.LocalConduit.dispatchDirect(LocalConduit.java:100)
        at org.apache.cxf.transport.local.LocalConduit.close(LocalConduit.java:71)
        at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
        at org.apache.camel.component.cxf.invoker.CxfClient.invokeWithMessageStream(CxfClient.java:130)
        at org.apache.camel.component.cxf.invoker.CxfClient.dispatch(CxfClient.java:75)
        at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:248)
        at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:170)
        at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:59)
        at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:53)
        at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44)
        at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:143)
        at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:87)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:85)
        at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:40)
        at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44)
        at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:68)
        at org.apache.camel.component.cxf.CamelInvoker.invoke(CamelInvoker.java:59)
        at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor$1.run(MessageInvokerInterceptor.java:51)
        at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
        at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor.handleMessage(MessageInvokerInterceptor.java:71)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
        at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
        at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:92)
        at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:214)
        at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:151)
        at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:170)
        at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:148)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
        at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
        at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
        at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:324)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
        at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:730)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
        at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
        at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
INFO: Interceptor has thrown exception, unwinding now
java.lang.ArrayIndexOutOfBoundsException: 6 >= 0
        at java.util.Vector.elementAt(Vector.java:427)
        at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
        at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
        at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
        at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSequence(XmlSchemaSerializer.java:989)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:913)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
        at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
        at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
        at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
        at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
        at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
        at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
        at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
        at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
        at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
        at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
...
...
...

If I invoke a fresh started service once with a single thread and after that with multiple threads it works fine.

The attached patch fixes that but I'm not sure if it's the right place and who is at fault here. The overhead by this patch should be minimal.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CXF-1560) EndpointReferenceUtils.getSchema threading issue

Posted by "Marc Giger (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CXF-1560?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12593410#action_12593410 ] 

Marc Giger commented on CXF-1560:
---------------------------------

Hi Daniel,
My patch was not meant to apply as is. It just should show the problematic code part, and the possible solution;-)
Your patch works as expected.

Is your patch against cxf-2.1? I've tested it with cxf-2.0.6

Thanks

> EndpointReferenceUtils.getSchema threading issue
> ------------------------------------------------
>
>                 Key: CXF-1560
>                 URL: https://issues.apache.org/jira/browse/CXF-1560
>             Project: CXF
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.6
>            Reporter: Marc Giger
>            Assignee: Daniel Kulp
>         Attachments: cxf-1560.patch, cxf-2.0.6-threading-issue.patch
>
>
> After the first time the service is started and the service is invoked in parallel with multiple threads I get the following
> stacktrace and the service returns a soap-fault:
> 30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.ArrayIndexOutOfBoundsException: 2 >= 0
>         at java.util.Vector.elementAt(Vector.java:427)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
>         at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeChoice(XmlSchemaSerializer.java:1229)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:917)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
>         at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
>         at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
>         at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
>         at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
>         at org.apache.cxf.transport.local.LocalConduit.dispatchDirect(LocalConduit.java:100)
>         at org.apache.cxf.transport.local.LocalConduit.close(LocalConduit.java:71)
>         at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.camel.component.cxf.invoker.CxfClient.invokeWithMessageStream(CxfClient.java:130)
>         at org.apache.camel.component.cxf.invoker.CxfClient.dispatch(CxfClient.java:75)
>         at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:248)
>         at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:170)
>         at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:59)
>         at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:53)
>         at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44)
>         at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:143)
>         at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:87)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:85)
>         at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:40)
>         at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44)
>         at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:68)
>         at org.apache.camel.component.cxf.CamelInvoker.invoke(CamelInvoker.java:59)
>         at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor$1.run(MessageInvokerInterceptor.java:51)
>         at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
>         at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor.handleMessage(MessageInvokerInterceptor.java:71)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
>         at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:92)
>         at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:214)
>         at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:151)
>         at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:170)
>         at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:148)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>         at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
>         at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
>         at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>         at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
>         at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
>         at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
>         at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
>         at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
>         at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>         at org.mortbay.jetty.Server.handle(Server.java:324)
>         at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
>         at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
>         at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:730)
>         at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
>         at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
>         at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
>         at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
> 30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.ArrayIndexOutOfBoundsException: 6 >= 0
>         at java.util.Vector.elementAt(Vector.java:427)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
>         at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSequence(XmlSchemaSerializer.java:989)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:913)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
>         at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
>         at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
>         at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
>         at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
> ...
> ...
> ...
> If I invoke a fresh started service once with a single thread and after that with multiple threads it works fine.
> The attached patch fixes that but I'm not sure if it's the right place and who is at fault here. The overhead by this patch should be minimal.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CXF-1560) EndpointReferenceUtils.getSchema threading issue

Posted by "Marc Giger (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CXF-1560?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Marc Giger updated CXF-1560:
----------------------------

    Attachment: cxf-2.0.6-threading-issue.patch

> EndpointReferenceUtils.getSchema threading issue
> ------------------------------------------------
>
>                 Key: CXF-1560
>                 URL: https://issues.apache.org/jira/browse/CXF-1560
>             Project: CXF
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.6
>            Reporter: Marc Giger
>         Attachments: cxf-2.0.6-threading-issue.patch
>
>
> After the first time the service is started and the service is invoked in parallel with multiple threads I get the following
> stacktrace and the service returns a soap-fault:
> 30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.ArrayIndexOutOfBoundsException: 2 >= 0
>         at java.util.Vector.elementAt(Vector.java:427)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
>         at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeChoice(XmlSchemaSerializer.java:1229)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:917)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
>         at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
>         at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
>         at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
>         at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
>         at org.apache.cxf.transport.local.LocalConduit.dispatchDirect(LocalConduit.java:100)
>         at org.apache.cxf.transport.local.LocalConduit.close(LocalConduit.java:71)
>         at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.camel.component.cxf.invoker.CxfClient.invokeWithMessageStream(CxfClient.java:130)
>         at org.apache.camel.component.cxf.invoker.CxfClient.dispatch(CxfClient.java:75)
>         at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:248)
>         at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:170)
>         at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:59)
>         at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:53)
>         at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44)
>         at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:143)
>         at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:87)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:85)
>         at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:40)
>         at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44)
>         at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:68)
>         at org.apache.camel.component.cxf.CamelInvoker.invoke(CamelInvoker.java:59)
>         at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor$1.run(MessageInvokerInterceptor.java:51)
>         at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
>         at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor.handleMessage(MessageInvokerInterceptor.java:71)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
>         at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:92)
>         at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:214)
>         at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:151)
>         at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:170)
>         at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:148)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>         at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
>         at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
>         at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>         at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
>         at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
>         at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
>         at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
>         at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
>         at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>         at org.mortbay.jetty.Server.handle(Server.java:324)
>         at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
>         at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
>         at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:730)
>         at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
>         at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
>         at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
>         at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
> 30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.ArrayIndexOutOfBoundsException: 6 >= 0
>         at java.util.Vector.elementAt(Vector.java:427)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
>         at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSequence(XmlSchemaSerializer.java:989)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:913)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
>         at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
>         at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
>         at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
>         at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
> ...
> ...
> ...
> If I invoke a fresh started service once with a single thread and after that with multiple threads it works fine.
> The attached patch fixes that but I'm not sure if it's the right place and who is at fault here. The overhead by this patch should be minimal.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CXF-1560) EndpointReferenceUtils.getSchema threading issue

Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CXF-1560?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniel Kulp updated CXF-1560:
-----------------------------

    Attachment: cxf-1560.patch


The patch is a bit heavyweight (adds a sync block along the critical message path, even if not needed) so I'm going to change that a bit.   However, it's also only "part" of the problem.   There are a couple other places in the code where schema<-->doc stuff occurs that may also break with this.   I'm going to go ahead and add a couple other sync blocks and stuff to hopefully fix this.

Unforunately, svn at apache is down again so I cannot commit it for you to test.  :-(    I'm going to attach a patch with my changes.   If you could give that a try, that would be great.



> EndpointReferenceUtils.getSchema threading issue
> ------------------------------------------------
>
>                 Key: CXF-1560
>                 URL: https://issues.apache.org/jira/browse/CXF-1560
>             Project: CXF
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.6
>            Reporter: Marc Giger
>            Assignee: Daniel Kulp
>         Attachments: cxf-1560.patch, cxf-2.0.6-threading-issue.patch
>
>
> After the first time the service is started and the service is invoked in parallel with multiple threads I get the following
> stacktrace and the service returns a soap-fault:
> 30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.ArrayIndexOutOfBoundsException: 2 >= 0
>         at java.util.Vector.elementAt(Vector.java:427)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
>         at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeChoice(XmlSchemaSerializer.java:1229)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:917)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
>         at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
>         at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
>         at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
>         at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
>         at org.apache.cxf.transport.local.LocalConduit.dispatchDirect(LocalConduit.java:100)
>         at org.apache.cxf.transport.local.LocalConduit.close(LocalConduit.java:71)
>         at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.camel.component.cxf.invoker.CxfClient.invokeWithMessageStream(CxfClient.java:130)
>         at org.apache.camel.component.cxf.invoker.CxfClient.dispatch(CxfClient.java:75)
>         at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:248)
>         at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:170)
>         at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:59)
>         at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:53)
>         at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44)
>         at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:143)
>         at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:87)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:85)
>         at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:40)
>         at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44)
>         at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:68)
>         at org.apache.camel.component.cxf.CamelInvoker.invoke(CamelInvoker.java:59)
>         at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor$1.run(MessageInvokerInterceptor.java:51)
>         at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
>         at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor.handleMessage(MessageInvokerInterceptor.java:71)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
>         at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:92)
>         at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:214)
>         at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:151)
>         at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:170)
>         at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:148)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>         at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
>         at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
>         at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>         at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
>         at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
>         at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
>         at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
>         at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
>         at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>         at org.mortbay.jetty.Server.handle(Server.java:324)
>         at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
>         at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
>         at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:730)
>         at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
>         at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
>         at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
>         at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
> 30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.ArrayIndexOutOfBoundsException: 6 >= 0
>         at java.util.Vector.elementAt(Vector.java:427)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
>         at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSequence(XmlSchemaSerializer.java:989)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:913)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
>         at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
>         at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
>         at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
>         at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
> ...
> ...
> ...
> If I invoke a fresh started service once with a single thread and after that with multiple threads it works fine.
> The attached patch fixes that but I'm not sure if it's the right place and who is at fault here. The overhead by this patch should be minimal.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (CXF-1560) EndpointReferenceUtils.getSchema threading issue

Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CXF-1560?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniel Kulp resolved CXF-1560.
------------------------------

    Fix Version/s: 2.0.7
                   2.1.1
       Resolution: Fixed

> EndpointReferenceUtils.getSchema threading issue
> ------------------------------------------------
>
>                 Key: CXF-1560
>                 URL: https://issues.apache.org/jira/browse/CXF-1560
>             Project: CXF
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.6
>            Reporter: Marc Giger
>            Assignee: Daniel Kulp
>             Fix For: 2.1.1, 2.0.7
>
>         Attachments: cxf-1560.patch, cxf-2.0.6-threading-issue.patch
>
>
> After the first time the service is started and the service is invoked in parallel with multiple threads I get the following
> stacktrace and the service returns a soap-fault:
> 30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.ArrayIndexOutOfBoundsException: 2 >= 0
>         at java.util.Vector.elementAt(Vector.java:427)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
>         at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeChoice(XmlSchemaSerializer.java:1229)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:917)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
>         at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
>         at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
>         at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
>         at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
>         at org.apache.cxf.transport.local.LocalConduit.dispatchDirect(LocalConduit.java:100)
>         at org.apache.cxf.transport.local.LocalConduit.close(LocalConduit.java:71)
>         at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.camel.component.cxf.invoker.CxfClient.invokeWithMessageStream(CxfClient.java:130)
>         at org.apache.camel.component.cxf.invoker.CxfClient.dispatch(CxfClient.java:75)
>         at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:248)
>         at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:170)
>         at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:59)
>         at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:53)
>         at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44)
>         at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:143)
>         at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:87)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:85)
>         at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:40)
>         at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44)
>         at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:68)
>         at org.apache.camel.component.cxf.CamelInvoker.invoke(CamelInvoker.java:59)
>         at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor$1.run(MessageInvokerInterceptor.java:51)
>         at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
>         at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor.handleMessage(MessageInvokerInterceptor.java:71)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
>         at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:92)
>         at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:214)
>         at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:151)
>         at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:170)
>         at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:148)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>         at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
>         at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
>         at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>         at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
>         at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
>         at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
>         at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
>         at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
>         at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>         at org.mortbay.jetty.Server.handle(Server.java:324)
>         at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
>         at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
>         at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:730)
>         at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
>         at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
>         at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
>         at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
> 30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.ArrayIndexOutOfBoundsException: 6 >= 0
>         at java.util.Vector.elementAt(Vector.java:427)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
>         at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSequence(XmlSchemaSerializer.java:989)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:913)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
>         at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
>         at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
>         at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
>         at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
> ...
> ...
> ...
> If I invoke a fresh started service once with a single thread and after that with multiple threads it works fine.
> The attached patch fixes that but I'm not sure if it's the right place and who is at fault here. The overhead by this patch should be minimal.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CXF-1560) EndpointReferenceUtils.getSchema threading issue

Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CXF-1560?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12593412#action_12593412 ] 

Daniel Kulp commented on CXF-1560:
----------------------------------


Yea, my patch is against 2.1 as I pretty much always fix things there and then merge the fixes back to 2.0.x.  

Thanks for the report.  Once svn is back up, I'll get it committed and merged back 2.0.x.



> EndpointReferenceUtils.getSchema threading issue
> ------------------------------------------------
>
>                 Key: CXF-1560
>                 URL: https://issues.apache.org/jira/browse/CXF-1560
>             Project: CXF
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.6
>            Reporter: Marc Giger
>            Assignee: Daniel Kulp
>         Attachments: cxf-1560.patch, cxf-2.0.6-threading-issue.patch
>
>
> After the first time the service is started and the service is invoked in parallel with multiple threads I get the following
> stacktrace and the service returns a soap-fault:
> 30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.ArrayIndexOutOfBoundsException: 2 >= 0
>         at java.util.Vector.elementAt(Vector.java:427)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
>         at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeChoice(XmlSchemaSerializer.java:1229)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:917)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
>         at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
>         at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
>         at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
>         at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
>         at org.apache.cxf.transport.local.LocalConduit.dispatchDirect(LocalConduit.java:100)
>         at org.apache.cxf.transport.local.LocalConduit.close(LocalConduit.java:71)
>         at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.camel.component.cxf.invoker.CxfClient.invokeWithMessageStream(CxfClient.java:130)
>         at org.apache.camel.component.cxf.invoker.CxfClient.dispatch(CxfClient.java:75)
>         at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:248)
>         at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:170)
>         at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:59)
>         at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:53)
>         at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44)
>         at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:143)
>         at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:87)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:85)
>         at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:40)
>         at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44)
>         at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:68)
>         at org.apache.camel.component.cxf.CamelInvoker.invoke(CamelInvoker.java:59)
>         at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor$1.run(MessageInvokerInterceptor.java:51)
>         at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
>         at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor.handleMessage(MessageInvokerInterceptor.java:71)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
>         at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:92)
>         at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:214)
>         at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:151)
>         at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:170)
>         at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:148)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>         at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
>         at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
>         at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>         at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
>         at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
>         at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
>         at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
>         at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
>         at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>         at org.mortbay.jetty.Server.handle(Server.java:324)
>         at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
>         at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
>         at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:730)
>         at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
>         at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
>         at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
>         at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
> 30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.ArrayIndexOutOfBoundsException: 6 >= 0
>         at java.util.Vector.elementAt(Vector.java:427)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
>         at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSequence(XmlSchemaSerializer.java:989)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:913)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
>         at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
>         at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
>         at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
>         at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
> ...
> ...
> ...
> If I invoke a fresh started service once with a single thread and after that with multiple threads it works fine.
> The attached patch fixes that but I'm not sure if it's the right place and who is at fault here. The overhead by this patch should be minimal.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Assigned: (CXF-1560) EndpointReferenceUtils.getSchema threading issue

Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CXF-1560?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniel Kulp reassigned CXF-1560:
--------------------------------

    Assignee: Daniel Kulp

> EndpointReferenceUtils.getSchema threading issue
> ------------------------------------------------
>
>                 Key: CXF-1560
>                 URL: https://issues.apache.org/jira/browse/CXF-1560
>             Project: CXF
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.6
>            Reporter: Marc Giger
>            Assignee: Daniel Kulp
>         Attachments: cxf-2.0.6-threading-issue.patch
>
>
> After the first time the service is started and the service is invoked in parallel with multiple threads I get the following
> stacktrace and the service returns a soap-fault:
> 30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.ArrayIndexOutOfBoundsException: 2 >= 0
>         at java.util.Vector.elementAt(Vector.java:427)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
>         at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeChoice(XmlSchemaSerializer.java:1229)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:917)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
>         at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
>         at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
>         at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
>         at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
>         at org.apache.cxf.transport.local.LocalConduit.dispatchDirect(LocalConduit.java:100)
>         at org.apache.cxf.transport.local.LocalConduit.close(LocalConduit.java:71)
>         at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.camel.component.cxf.invoker.CxfClient.invokeWithMessageStream(CxfClient.java:130)
>         at org.apache.camel.component.cxf.invoker.CxfClient.dispatch(CxfClient.java:75)
>         at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:248)
>         at org.apache.camel.component.cxf.CxfProducer.process(CxfProducer.java:170)
>         at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:59)
>         at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:53)
>         at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsynProcessorBridge.process(AsyncProcessorTypeConverter.java:44)
>         at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:143)
>         at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:87)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:85)
>         at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:40)
>         at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:44)
>         at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:68)
>         at org.apache.camel.component.cxf.CamelInvoker.invoke(CamelInvoker.java:59)
>         at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor$1.run(MessageInvokerInterceptor.java:51)
>         at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
>         at org.apache.camel.component.cxf.feature.MessageInvokerInterceptor.handleMessage(MessageInvokerInterceptor.java:71)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
>         at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:92)
>         at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:214)
>         at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:151)
>         at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:170)
>         at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:148)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>         at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
>         at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
>         at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>         at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
>         at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
>         at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
>         at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
>         at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
>         at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>         at org.mortbay.jetty.Server.handle(Server.java:324)
>         at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
>         at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
>         at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:730)
>         at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
>         at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
>         at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
>         at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
> 30.04.2008 10:24:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.ArrayIndexOutOfBoundsException: 6 >= 0
>         at java.util.Vector.elementAt(Vector.java:427)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredDocumentImpl.getNodeValueString(Unknown Source)
>         at org.apache.xerces.dom.DeferredTextImpl.synchronizeData(Unknown Source)
>         at org.apache.xerces.dom.CharacterDataImpl.getNodeValue(Unknown Source)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeDocumentation(XmlSchemaSerializer.java:2002)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeAnnotation(XmlSchemaSerializer.java:1904)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:582)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSequence(XmlSchemaSerializer.java:989)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:913)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaChild(XmlSchemaSerializer.java:254)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchemaElement(XmlSchemaSerializer.java:192)
>         at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSchema(XmlSchemaSerializer.java:83)
>         at org.apache.ws.commons.schema.XmlSchema.serialize_internal(XmlSchema.java:452)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:426)
>         at org.apache.ws.commons.schema.XmlSchema.write(XmlSchema.java:382)
>         at org.apache.cxf.service.model.SchemaInfo.getElement(SchemaInfo.java:82)
>         at org.apache.cxf.wsdl.EndpointReferenceUtils.getSchema(EndpointReferenceUtils.java:541)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.setSchemaInMessage(AbstractInDatabindingInterceptor.java:104)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:86)
>         at org.apache.cxf.interceptor.AbstractInDatabindingInterceptor.getDataReader(AbstractInDatabindingInterceptor.java:93)
>         at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:69)
>         at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
> ...
> ...
> ...
> If I invoke a fresh started service once with a single thread and after that with multiple threads it works fine.
> The attached patch fixes that but I'm not sure if it's the right place and who is at fault here. The overhead by this patch should be minimal.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.