Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.7
-
None
Description
The PegDownProcessor used at https://github.com/apache/maven-doxia/blob/doxia-1.7/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java#L72 is shared between multiple concurrent executions of the maven-site-plugin.
This leads to random errors (NPEs, ClassCastException) because the parser state machine is reused by multiple threads.
It seem not to be enough to make the field non-static since the whole MarkdownParser instance seem to be shared between different threads.
The PegDown Javadoc explicitly states that a PegDownProcessor is not thread-safe: https://github.com/sirthias/pegdown/blob/master/src/main/java/org/pegdown/PegDownProcessor.java
Possible solutions:
- Put the PegDownProcessor into a threadLocal.
- Instanciate the PegDownProcessor in the toHtml method.