[ 
https://issues.apache.org/jira/browse/VELTOOLS-198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17630582#comment-17630582
 ] 

Oscar Doral commented on VELTOOLS-198:
--------------------------------------

I've created a pull request with a solution to move from ConcurrentMap to 
ThreadLocal [https://github.com/apache/velocity-tools/pull/12]

This way, formatters won't be shared between different threads.

> org.apache.velocity.tools.ConversionUtils#getNumberFormat(java.lang.String, 
> java.util.Locale) is not thread safe for custom formats
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: VELTOOLS-198
>                 URL: https://issues.apache.org/jira/browse/VELTOOLS-198
>             Project: Velocity Tools
>          Issue Type: Bug
>          Components: GenericTools
>    Affects Versions: 3.1
>            Reporter: Oscar Doral
>            Priority: Major
>              Labels: pull-request-available
>
> org.apache.velocity.tools.ConversionUtils holds a cache for custom formats so 
> it can reuse formatters across different requests:
> {code:java}
> private static ConcurrentMap<String,NumberFormat> customFormatsCache = new 
> ConcurrentHashMap<String,NumberFormat>(); {code}
> Problem is formatters don't use to be thread safe so if same formatter is 
> used at the same time by two different threads we can get errors depending on 
> race conditions.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@velocity.apache.org
For additional commands, e-mail: dev-h...@velocity.apache.org

Reply via email to