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

Chris Trezzo commented on YARN-2914:
------------------------------------

Thanks [~ted_yu] and [~varun_saxena] for the find and patch!

Talking with [~sjlee0], we were thinking that it might be most simple to just 
get rid of the init method and the enum all together. We can make it a more 
straightforward singleton pattern with a line like the following:
{noformat}
private static final CSM = create();
{noformat}

The getInstance() method would then just return CSM. It will also be necessary 
to make the ClientSCMMetrics constructor private.

What do you guys think?

As another note, SharedCacheUploaderMetrics also has this bug. So we can either 
change that class as part of this patch or file a separate JIRA.

> Potential race condition in ClientSCMMetrics#getInstance()
> ----------------------------------------------------------
>
>                 Key: YARN-2914
>                 URL: https://issues.apache.org/jira/browse/YARN-2914
>             Project: Hadoop YARN
>          Issue Type: Bug
>    Affects Versions: 2.6.0
>            Reporter: Ted Yu
>            Assignee: Varun Saxena
>            Priority: Minor
>             Fix For: 2.7.0
>
>         Attachments: YARN-2914.patch
>
>
> {code}
>   public static ClientSCMMetrics getInstance() {
>     ClientSCMMetrics topMetrics = Singleton.INSTANCE.impl;
>     if (topMetrics == null) {
>       throw new IllegalStateException(
> {code}
> getInstance() doesn't hold lock on Singleton.this
> This may result in IllegalStateException being thrown prematurely.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to