[
https://issues.apache.org/jira/browse/XERCESJ-1687?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16273304#comment-16273304
]
Stephan Trebels commented on XERCESJ-1687:
------------------------------------------
The unit test simply uses a schema with a few arbitrary assertions depending on
path-walking expressions, and an input XML, that has a certain minimal size,
that is more likely to show the issue. I did not try to scale the test down.
With 10 threads it failed 7 out of 8 times, with 50 it failed for every try I
did.
The fix in eclipse xpath is to remove the DefaultRSFactory, create a
SimpleRSFactory, that is a pure factory and does not do any pooling, and
reference it in ResultSequenceFactory.
Sadly the xpath code has evolved a lot since the copy used by Xerces, so using
a newer version is non-trivial. Our approach was to clone Xerces and Eclipse
XPath, fix xpath, and ensure Xerces uses the patched XPath. Naturally it'd be
nicer to fix this upstream, so we can abandon our clone.
> XSD 1.1 validation with xs:assert is not thread safe
> ----------------------------------------------------
>
> Key: XERCESJ-1687
> URL: https://issues.apache.org/jira/browse/XERCESJ-1687
> Project: Xerces2-J
> Issue Type: Bug
> Components: XML Schema 1.1 Structures
> Affects Versions: 2.12.0
> Environment: java 8 / java 9
> Reporter: Stephan Trebels
> Priority: Critical
> Attachments: parallel-test.zip
>
>
> The XSD 1.1 validation code uses eclipse webtools xpath to validate
> assertions. The PsychoPath XPath 2.0 engine has a bug in
> ResultSequenceFactory, which invalidates correct execution in all parallel
> invocation of XSD 1.1 validation.
> This issue affects completely unrelated schemas and input XML, as long as
> both use assertions. The effect is a lot of spurious assert violations. The
> issue is visible even if only two threads are used in parallel.
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=527812
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]