On May 11 2012, at 03:12 , Alan Bateman wrote:

> On 11/05/2012 00:11, Mike Duigou wrote:
>> 
>> Hello all;
>> 
>> A benign but potentially expensive race condition was discovered in 
>> java.util.UUID. The initialization of numberGenerator may cause the creation 
>> of a number of SecureRandom instances if multiple threads are attempting to 
>> initialize the field at the same time. This can happen because creation of 
>> the SecureRandom instances, depending upon system configuration and state, 
>> may take a significant amount of time.
>> 
>> Using a shared SecureRandom instance for the numberGenerator is an 
>> optimization--nothing bad happens as a result of each thread using it's own 
>> instance. However, creation of multiple SecureRandom instances, especially 
>> during system startup, may be expensive or have high latency if no previous 
>> SecureRandom instances have been created.
>> 
>> Accordingly, a holder class is used to ensure that only a single 
>> SecureRandom instance is created. The holder also serves to defer 
>> initialization of numberGenerator until randomUUID() is first called. 
>> 
>> Webrev:
>> 
>> http://cr.openjdk.java.net/~mduigou/7071826/0/webrev/
>> 
>> This issue will be proposed for backport to Java 7u6 once integrated into 
>> Java 8
>> 
> The implementation change looks good to me. For the javadoc change then could 
> you link to RFC 4122 on the IEFT site?

Yes.

> 
> I don't quite get the test update, it improves the test but I don't see how 
> it might demonstrate the race condition.

It doesn't demonstrate the race condition. The test changes are mostly just a 
result of reviewing the tests while I planned the changes.

> Minor consistency comment is that the if statements use braces whereas the 
> existing code doesn't,

According to javastyle guidelines we're supposed to always use braces. I've not 
modified existing cases where braces are not present unless modifying the if 
expression.

> also missing space in "if(". 

Fixed.

> 
> -Alan.
> 

Reply via email to