Return-Path: X-Original-To: apmail-axis-java-dev-archive@www.apache.org Delivered-To: apmail-axis-java-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 60A71177DC for ; Fri, 8 May 2015 15:35:01 +0000 (UTC) Received: (qmail 7374 invoked by uid 500); 8 May 2015 15:35:01 -0000 Delivered-To: apmail-axis-java-dev-archive@axis.apache.org Received: (qmail 7262 invoked by uid 500); 8 May 2015 15:35:00 -0000 Mailing-List: contact java-dev-help@axis.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-dev@axis.apache.org Delivered-To: mailing list java-dev@axis.apache.org Received: (qmail 7246 invoked by uid 99); 8 May 2015 15:35:00 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 08 May 2015 15:35:00 +0000 Date: Fri, 8 May 2015 15:35:00 +0000 (UTC) From: "Kim Albertsson (JIRA)" To: java-dev@axis.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Created] (AXIS-2909) ConcurrentModificationException when running under Java 1.8.0_20 or later MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 Kim Albertsson created AXIS-2909: ------------------------------------ Summary: ConcurrentModificationException when running under Java 1.8.0_20 or later Key: AXIS-2909 URL: https://issues.apache.org/jira/browse/AXIS-2909 Project: Axis Issue Type: Bug Components: Serialization/Deserialization Affects Versions: 1.4 Environment: java full version "1.8.0_20-b26" Reporter: Kim Albertsson Fix For: 1.4.1 Java 8u20 introduced a change in how Collections.sort is implemented. See http://bugs.java.com/view_bug.do?bug_id=8032636 and http://bugs.java.com/view_bug.do?bug_id=8030848. The sorting is now deferred to the specific list implementation which can operate directly on the underlying data structure without making a defensive copy beforehand. This can cause a java.util.ConcurrentModificationException to occur. The error can be reproduced by compiling axis-1.4.1-SNAPSHOT using java 1.8.0_20 or later and running the maven test suite (mvn test). The error does not manifest every single run, but I have never had to run the tests more than 3 times to reproduce. The test that fails is test.concurrency.TestApplicationScope. The issue originates in org.apache.axis.description.JavaServiceDesc.getOperationsByQName where an unsynchronized call to Collections.sort is made. Synchronizing over the sorted array resolves the issue. A working patch that has been tested in the test suite is appended in diff.txt. The stack trace from the axis test-suite is appended below. Do note however that this stack trace does not show the actual error (The original error is caught and rethrown). To get the stack trace where the Collections.sort call is made you can run the specific test and attach the jdb configured to catch all java.util.ConcurrentModificationExceptions. The stack trace from my jdb session is appended as axis-concurrent-mod.stack-trace. It was generated from an apache tomcat instance running a webservice relying on axis. AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.util.ConcurrentModificationException faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:java.util.ConcurrentModificationException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:422) at java.lang.Class.newInstance(Class.java:442) at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:104) at org.apache.axis.encoding.ser.BeanDeserializerFactory.getGeneralPurpose(BeanDeserializerFactory.java:89) at org.apache.axis.encoding.ser.BaseDeserializerFactory.getDeserializerAs(BaseDeserializerFactory.java:89) at org.apache.axis.encoding.DeserializationContext.getDeserializer(DeserializationContext.java:484) at org.apache.axis.encoding.DeserializationContext.getDeserializerForType(DeserializationContext.java:567) at org.apache.axis.message.SOAPFaultDetailsBuilder.onStartChild(SOAPFaultDetailsBuilder.java:157) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1052) at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source) at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:241) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) at org.apache.axis.Message.getSOAPEnvelope(Message.java:435) at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) at org.apache.axis.client.Call.invokeEngine(Call.java:2782) at org.apache.axis.client.Call.invoke(Call.java:2765) at org.apache.axis.client.Call.invoke(Call.java:2443) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:2391) at test.concurrency.TestApplicationScope$TestRunnable.run(TestApplicationScope.java:80) at java.lang.Thread.run(Thread.java:745) -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org For additional commands, e-mail: java-dev-help@axis.apache.org