When two threads are running VelocimacroFactory.startRenderingMacro() simultaneously (same template), both check that templateMap is empty, then both create a new stack, then the second thread put it in templateMap, replacing the one added by the first thread.
At this time we got a stack which size == 1 instead of 2.
Then both threads endProcessingMacros(), both get stack from templateMap and check that its size is > 0, first one empty stack then second pop() macro and gets an EmptyStackException.
behavior was introduced by improvement
patch is joined, synchronize(templateMap) in VelocimacroFactory.startRenderingMacro().
|Workflow||Default workflow, editable Closed status [ 12551525 ]||jira [ 12552412 ]|
|Workflow||jira [ 12414679 ]||Default workflow, editable Closed status [ 12551525 ]|
|Status||Resolved [ 5 ]||Closed [ 6 ]|
|Status||Open [ 1 ]||Resolved [ 5 ]|
|Resolution||Fixed [ 1 ]|