[jira] Updated: (LANG-334) Enum is not thread-safe

2007-06-06 Thread Henri Yandell (JIRA)

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

Henri Yandell updated LANG-334:
---

Attachment: EnumPlay.java

I made an attempt at a test, but it couldn't replicate the 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.3.1

 Attachments: 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.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[jira] Updated: (LANG-334) Enum is not thread-safe

2007-05-27 Thread Henri Yandell (JIRA)

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

Henri Yandell updated LANG-334:
---

Fix Version/s: 2.3.1

Fix for 2.3.1. First step, write a test.

 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.3.1


 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.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]