Skip to content

Xpp3DomBuilder.createXmlReader: remove thread-unsafe system property manipulation#393

Open
elharo wants to merge 3 commits into
masterfrom
fix/xpp3dombuilder-system-property
Open

Xpp3DomBuilder.createXmlReader: remove thread-unsafe system property manipulation#393
elharo wants to merge 3 commits into
masterfrom
fix/xpp3dombuilder-system-property

Conversation

@elharo

@elharo elharo commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Xpp3DomBuilder.createXmlReader() clears and restores the global org.xml.sax.driver system property without synchronization (lines 119-129). In a multi-threaded environment like Maven parallel builds, one thread's clear/restore sequence interferes with other threads' reads of the same property. The code's own comment acknowledges: "There's a 'slight' problem with this an parallel maven: It does not work ;)"

The method already tries to directly instantiate com.sun.org.apache.xerces.internal.parsers.SAXParser first — which succeeds on all Oracle/OpenJDK JVMs. The system property manipulation fallback is both unnecessary and harmful.

Fix: Removed the system property manipulation entirely. If the direct instantiation fails, falls through to XMLReaderFactory.createXMLReader() without modifying any global state.

Fixes #392

@elharo elharo requested a review from slachiewicz July 1, 2026 14:07
@slachiewicz slachiewicz added the bug Something isn't working label Jul 2, 2026
@slachiewicz slachiewicz removed their request for review July 2, 2026 06:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Xpp3DomBuilder.createXmlReader() system property race condition

2 participants