Sent from my iPad
On Nov 27, 2011, at 9:49 AM, Weijun Wang <weijun.w...@oracle.com> wrote: > >> Is it possible that the exception is thrown sometimes but not always? > > If it always fails, there is no problem failing once at the beginning. > Otherwise, if there is a chance it goes fine again after calling some codes, > maybe it's better to try call it each time? > I don't think it the case will happen, otherwise there must be a potential bug. Indeed, the exception is unlikely to happen once JSSE boot up. Xuelei > Max > > On 11/27/2011 09:05 AM, Xuelei Fan wrote: >> >> >> Sent from my iPad >> >> On Nov 27, 2011, at 12:23 AM, Weijun Wang<weijun.w...@oracle.com> wrote: >> >>> There is one thing I'm not sure about: >>> >>> In which case(s), the GeneralSecurityException will be thrown? >> SSLContext initializatio >> >>> 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? >>> >> It is reorged in line 100 and 101, the cause is described as unable to >> initialize the ssl context. >> >> Xuelei >> >>> 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 >>>>>>>> >>>>>>> >>>>>> >>>>