There is one thing I'm not sure about:

In which case(s), the GeneralSecurityException will be thrown? Is it possible 
that the exception is thrown sometimes but not always? Also, the old code has 
the exception as a clause of the CertStoreException. Can you also include it?

Max



On Nov 26, 2011, at 11:25 PM, Xuelei Fan <xuelei....@oracle.com> wrote:

> new webrev: http://cr.openjdk.java.net/~xuelei/7115524/webrev.01/
> 
> You're right on the synchronization issue. In the new webrev, I also
> remove the "synchronized" keyword on method. Instead, a synchronization
> on the static attribute is used.
> 
> Thanks,
> Xuelei
> 
> On 11/26/2011 11:16 PM, Weijun Wang wrote:
>> 
>> On Nov 26, 2011, at 10:58 PM, Xuelei Fan <xuelei....@oracle.com> wrote:
>> 
>>> I was wondering why we synchronized the getInstance() and
>>> engineGetCertificates(). It seems that we only need to synchronize the
>>> serverChain variable.
>>> 
>>> I will update the synchronization if no objection.
>>> 
>>> Thanks,
>>> Xuelei
>>> 
>>> On 11/26/2011 10:42 PM, Xuelei Fan wrote:
>>>> On 11/26/2011 9:59 PM, Weijun Wang wrote:
>>>>> Hi Xuelei
>>>>> 
>>>>> Why move the local variables to static fields?
>>>>> 
>>>> In order to improve the performance. SSLContext.init() is expensive.
>>>> 
>>>>> The engineGetCertificates method is only synchronized on this but not the 
>>>>> whole class, so there is a chance that the method is called by multiple 
>>>>> threads at the same time. This means if you only use one static 
>>>>> GetChainTrustManager field, its serverChain field can be modified by 
>>>>> different threads.
>>>>> 
>>>> We have synchronized the engineGetCertificates(), and this method is the
>>>> only method to access the GetChainTrustManager object. As the attribute
>>>> is declared as "final static", so it will be initialized once even in
>>>> multiple threads.
>> 
>> But this method is only synchronized on the instance, not the class. You can 
>> create two SSLServerCertStore objects can call this method at the same time.
>> 
>> Max
>> 
>>>> 
>>>> That's, the access to serverChain variable has been synchronized by
>>>> synchronizing the engineGetCertificates method.
>>>> 
>>>> Xuelei
>>>> 
>>>>> -Max
>>>>> 
>>>>> On Nov 26, 2011, at 8:43 PM, Xuelei Fan wrote:
>>>>> 
>>>>>> webrev: http://cr.openjdk.java.net/~xuelei/7115524/webrev.00/
>>>>>> 
>>>>>> No new regression test, the current test,
>>>>>> test/sun/security/tools/keytool/printssl.sh, has already been able to
>>>>>> test the update.
>>>>>> 
>>>>>> Thanks,
>>>>>> Xuelei
>>>>> 
>>>> 
>>> 
> 

Reply via email to