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.