[jira] [Commented] (YARN-2914) Potential race condition in ClientSCMMetrics#getInstance()
[ https://issues.apache.org/jira/browse/YARN-2914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14233622#comment-14233622 ] Tsuyoshi OZAWA commented on YARN-2914: -- [~varun_saxena], Thanks for your contribution. I think we need to init the singleton object with configuration. On the other hand, getInstance() doesn't take configuration as an argument. This semantic gap prevents us from calling initSingleton inside getInstance. Comments: * We should also take a lock of Singleton.INSTANCE in the method initSingleton. 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)
[jira] [Commented] (YARN-2914) Potential race condition in ClientSCMMetrics#getInstance()
[ https://issues.apache.org/jira/browse/YARN-2914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14233632#comment-14233632 ] Tsuyoshi OZAWA commented on YARN-2914: -- I found that the configuration which Singleton#init receives is never used. We can call init inside getInstance by passing null to initSingleton or changing the signature of initSingleton not to receive an object of configuration. Do you mind updating? 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)
[jira] [Commented] (YARN-2914) Potential race condition in ClientSCMMetrics#getInstance()
[ https://issues.apache.org/jira/browse/YARN-2914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=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)
[jira] [Commented] (YARN-2914) Potential race condition in ClientSCMMetrics#getInstance()
[ https://issues.apache.org/jira/browse/YARN-2914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14233679#comment-14233679 ] Sangjin Lee commented on YARN-2914: --- Just to clarify, {code} private static final ClientSCMMetrics instance = create(); {code} 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)
[jira] [Commented] (YARN-2914) Potential race condition in ClientSCMMetrics#getInstance()
[ https://issues.apache.org/jira/browse/YARN-2914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14233685#comment-14233685 ] Tsuyoshi OZAWA commented on YARN-2914: -- [~ctrezzo], Thanks for your suggestion! Your idea make sense to me. I prototyped it and it seems to work well. +1 for the design. [~varun_saxena], could you update a patch on Chris's idea? 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)
[jira] [Commented] (YARN-2914) Potential race condition in ClientSCMMetrics#getInstance()
[ https://issues.apache.org/jira/browse/YARN-2914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14231685#comment-14231685 ] Hadoop QA commented on YARN-2914: - {color:red}-1 overall{color}. Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12684673/YARN-2914.patch against trunk revision 75d5345. {color:green}+1 @author{color}. The patch does not contain any @author tags. {color:red}-1 tests included{color}. The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch. {color:green}+1 javac{color}. The applied patch does not increase the total number of javac compiler warnings. {color:green}+1 javadoc{color}. There were no new javadoc warning messages. {color:green}+1 eclipse:eclipse{color}. The patch built with eclipse:eclipse. {color:green}+1 findbugs{color}. The patch does not introduce any new Findbugs (version 2.0.3) warnings. {color:green}+1 release audit{color}. The applied patch does not increase the total number of release audit warnings. {color:green}+1 core tests{color}. The patch passed unit tests in hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-sharedcachemanager. {color:green}+1 contrib tests{color}. The patch passed contrib unit tests. Test results: https://builds.apache.org/job/PreCommit-YARN-Build/5977//testReport/ Console output: https://builds.apache.org/job/PreCommit-YARN-Build/5977//console This message is automatically generated. 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)
[jira] [Commented] (YARN-2914) Potential race condition in ClientSCMMetrics#getInstance()
[ https://issues.apache.org/jira/browse/YARN-2914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14232661#comment-14232661 ] Varun Saxena commented on YARN-2914: [~tedyu], we can probably call init inside getInstance if singleton object isnt there. Why do we need to throw an exception ? 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)