[ 
https://issues.apache.org/jira/browse/DOXIA-543?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel Wegener updated DOXIA-543:
---------------------------------
    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 taht 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.

  was:
The PegDownProcess 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 taht 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.


> maven-doxia-markdown fails in parallel builds
> ---------------------------------------------
>
>                 Key: DOXIA-543
>                 URL: https://issues.apache.org/jira/browse/DOXIA-543
>             Project: Maven Doxia
>          Issue Type: Bug
>          Components: Module - Markdown
>    Affects Versions: 1.7
>            Reporter: Daniel Wegener
>   Original Estimate: 10m
>  Remaining Estimate: 10m
>
> 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 taht 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.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to