[ 
https://issues.apache.org/jira/browse/GEODE-3774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16208126#comment-16208126
 ] 

ASF subversion and git services commented on GEODE-3774:
--------------------------------------------------------

Commit 397daecb4627292afacc20449a4ecb31e8c019c6 in geode's branch 
refs/heads/feature/GEODE-3026 from kohlmu-pivotal
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=397daec ]

GEODE-3774: moved service loader initialization around to avoid double-check 
locking


> Remove double-checked Locking in New Client Protocol code
> ---------------------------------------------------------
>
>                 Key: GEODE-3774
>                 URL: https://issues.apache.org/jira/browse/GEODE-3774
>             Project: Geode
>          Issue Type: Bug
>          Components: client/server
>            Reporter: Galen O'Sullivan
>            Assignee: Udo Kohlmeyer
>             Fix For: 1.4.0
>
>
> {{ServerConnectionFactory}} uses double-checked locking for loading the 
> services it depends on. This idiom is fundamentally broken.
> Even marking the field that's locked this way {{volatile}} may not resolve 
> the issue, as the object itself could be read as uninitialized even if the 
> field (reference) isn't. I don't really know the JMM well enough to be sure 
> that it's broken, but that's a good sign that we shouldn't do it unless we 
> really need to for performance reasons (and even then...)
> This may be best to resolve after GEODE-3751 and GEODE-3739 due to the 
> changes to loading those refactors will bring.
> While we're at it, we should assert that there is only one client protocol 
> service, because we can't handle two and which one we choose is undefined.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to