WS-RM ConcurrentModificationException from unsynchronized use of 
SequenceAcknowledgement
----------------------------------------------------------------------------------------

                 Key: CXF-3273
                 URL: https://issues.apache.org/jira/browse/CXF-3273
             Project: CXF
          Issue Type: Bug
          Components: WS-* Components
    Affects Versions: 2.3.2
            Reporter: Dennis Sosnoski


The WS-RM code needs to use synchronized blocks for both modifying and 
accessing SequenceAcknowledgement. Currently the code appears to use 
synchronized blocks for modifying SequenceAcknowledgement information, but not 
for reading it (for example in RMSoapInterceptor.encode(SoapMessage, 
RMProperties), where the SequenceAcknowledgement is serialized to XML). This 
can result in ConcurrentModificationException:

     [java] java.util.ConcurrentModificationException
     [java]     at 
java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
     [java]     at java.util.AbstractList$Itr.next(AbstractList.java:420)
     [java]     at 
com.sun.xml.bind.v2.runtime.reflect.Lister$CollectionLister$1.next(Lister.java:284)
     [java]     at 
com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:135)
     [java]     at 
com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:155)
     [java]     at 
com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340)
     [java]     at 
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696)
     [java]     at 
com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:152)
     [java]     at 
com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:189)
     [java]     at 
com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:316)
     [java]     at 
com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:323)
     [java]     at 
com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:72)
     [java]     at 
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:494)
     [java]     at 
com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315)
     [java]     at 
com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:244)
     [java]     at 
javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:109)
     [java]     at 
org.apache.cxf.ws.rm.soap.RMSoapInterceptor.encodeProperty(RMSoapInterceptor.java:396)
     [java]     at 
org.apache.cxf.ws.rm.soap.RMSoapInterceptor.encode(RMSoapInterceptor.java:206)
     [java]     at 
org.apache.cxf.ws.rm.soap.RMSoapInterceptor.encode(RMSoapInterceptor.java:154)
     [java]     at 
org.apache.cxf.ws.rm.soap.RMSoapInterceptor.mediate(RMSoapInterceptor.java:138)
     [java]     at 
org.apache.cxf.ws.rm.soap.RMSoapInterceptor.handleMessage(RMSoapInterceptor.java:126)
     [java]     at 
org.apache.cxf.ws.rm.soap.RMSoapInterceptor.handleMessage(RMSoapInterceptor.java:93)
     [java]     at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
     [java]     at 
org.apache.cxf.ws.addressing.ContextUtils.rebaseResponse(ContextUtils.java:403)
     [java]     at 
org.apache.cxf.ws.addressing.MAPAggregator.mediate(MAPAggregator.java:547)
     [java]     at 
org.apache.cxf.ws.addressing.MAPAggregator.handleMessage(MAPAggregator.java:227)
     [java]     at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
     [java]     at 
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
     [java]     at 
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:311)
     [java]     at 
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:280)
     [java]     at 
org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:72)
     [java]     at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:922)
     [java]     at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:860)
     [java]     at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
     [java]     at 
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247)
     [java]     at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:114)
     [java]     at org.eclipse.jetty.server.Server.handle(Server.java:352)
     [java]     at 
org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:596)
     [java]     at 
org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1066)
     [java]     at 
org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:805)
     [java]     at 
org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:212)
     [java]     at 
org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:426)
     [java]     at 
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:510)
     [java]     at 
org.eclipse.jetty.io.nio.SelectChannelEndPoint.access$000(SelectChannelEndPoint.java:34)
     [java]     at 
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
     [java]     at 
org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:450)
     [java]     at java.lang.Thread.run(Thread.java:595)


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

Reply via email to