You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Henri Yandell (JIRA)" <ji...@apache.org> on 2007/09/05 12:14:32 UTC
[jira] Closed: (LANG-334) Enum is not thread-safe
[ https://issues.apache.org/jira/browse/LANG-334?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Henri Yandell closed LANG-334.
------------------------------
Resolution: Fixed
I've applied Jason's patch to enums.Enum and enum.Enum. Many thanks to both of you for working on this issue.
> Enum is not thread-safe
> -----------------------
>
> Key: LANG-334
> URL: https://issues.apache.org/jira/browse/LANG-334
> Project: Commons Lang
> Issue Type: Bug
> Reporter: Michael Sclafani
> Fix For: 2.4
>
> Attachments: 334.patch, EnumPlay.java
>
>
> Enum uses no synchronization. Even if you assume that instances are only declared statically, the cEnumClasses map is global and can be written to when a thread triggers static initialization of B.class while some other thread is doing getEnumList(A.class). Unsynchronized access of a map undergoing mutation is not thread-safe.
> This isn't theoretical. We're seeing ValuedEnum.getEnum(X.class, 0) return null after returning the correct value over 100,000 times, and then return the correct value again on the next invocation.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.