[ 
https://issues.apache.org/jira/browse/CXF-3273?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dennis Sosnoski resolved CXF-3273.
----------------------------------

       Resolution: Fixed
    Fix Version/s: 2.4

Synchronized all use of collections in WS-RM acknowledgement processing 
(revision 1072914).

> 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
>             Fix For: 2.4
>
>
> 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.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to