Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8355006

XML Schema is not thread safe

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P3 P3
    • tbd
    • None
    • xml
    • None

      DESCRIPTION OF THE PROBLEM :

      According to the documentation javax.xml.validation.Schema class is thread-safe. However, validation of the schema with ComplexTypes fails if performed concurrently.

      The reproducer is attached. It instantiates a single schema and uses it for sequential and concurrent validation. Sequential validation completes successfully, but concurrent fails with the exception:

      java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key cvc-complex-type.2.4.d.1
              at java.base/java.util.ResourceBundle.getObject(ResourceBundle.java:566)
              at java.base/java.util.ResourceBundle.getString(ResourceBundle.java:522)
              at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XSMessageFormatter.formatMessage(XSMessageFormatter.java:78)
              at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:357)
              at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
              at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
              at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:512)
              at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3596)
              at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.elementLocallyValidComplexType(XMLSchemaValidator.java:3525)
              at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.elementLocallyValidType(XMLSchemaValidator.java:3441)
              at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processElementContent(XMLSchemaValidator.java:3343)
              at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleEndElement(XMLSchemaValidator.java:2373)
              at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.endElement(XMLSchemaValidator.java:944)
              at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1737)
              at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2908)
              at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:635)
              at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:113)
              at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:551)
              at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:890)
              at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:826)
              at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:134)
              at java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:247)
              at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:342)
              at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:122)
              at SchemaValidationThreadingTestP.lambda$main$0(SchemaValidationThreadingTestP.java:61)
              at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
              at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
              at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
              at java.base/java.lang.Thread.run(Thread.java:1575)

      After fixing "cvc-complex-type.2.4.d.1" resource, I have the following errors:

      [Error] :64:14: cvc-complex-type.2.4.d: Invalid content was found starting with element 'theMessage'. No child element '{items}' is expected at this point.

      The validation fails to verify XSDFACM::fElemMapCounter counter because it is incremented by all concurrent threads.

        1. SchemaValidationThreadingTestP.java
          3 kB
          Alexey Bakhtin
        2. error2.xml
          2 kB
          Alexey Bakhtin
        3. schema2.xsd
          2 kB
          Alexey Bakhtin

            joehw Joe Wang
            abakhtin Alexey Bakhtin
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: