[
https://issues.apache.org/jira/browse/HADOOP-11361?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15374164#comment-15374164
]
Tsuyoshi Ozawa commented on HADOOP-11361:
-----------------------------------------
Thanks [~vinayrpet] and [~yzhangal] for your reviews. My comments are as
follows:
1. . This is related to Youngjun's comment about null check, I perfer to remove
the variable {{MetricsCollectorImpl builder}} and to use local variable
{{List<MetricsRecordImpl> lastRecs}} for simplicity:
{code}
List<MetricsRecordImpl> lastRecs = null;
if (getAllMetrics) {
lastRecs = getMetrics(new MetricsCollectorImpl());
}
synchronized(this) {
if (lastRecs != null) {
updateAttrCache(lastRecs);
if (getAllMetrics) {
updateInfoCache(lastRecs);
}
}
jmxCacheTS = Time.now();
lastRecsCleared = true;
}
{code}
In this case, we also need to update {{getMetrics(MetricsCollectorImpl
builder)}} to return {{List<MetricsRecordImpl>}} instead of
{{Iterable<MetricsRecordImpl>}}.
2. This is minor nits comment, but I think we should add null-check assertions
against lastRecs here: {{private void updateInfoCache(List<MetricsRecordImpl>
lastRecs)}}, {{private int updateAttrCache(List<MetricsRecordImpl> lastRecs)}}.
It increases readability and simplicity. On trunk, we can use {{Nonnull}}
annotation(https://blogs.oracle.com/java-platform-group/entry/java_8_s_new_type),
but it's been introduced since jdk8. Assert.checkNotNull provided in Guava is
also enough.
> Fix a race condition in MetricsSourceAdapter.updateJmxCache
> -----------------------------------------------------------
>
> Key: HADOOP-11361
> URL: https://issues.apache.org/jira/browse/HADOOP-11361
> Project: Hadoop Common
> Issue Type: Bug
> Affects Versions: 2.4.1, 2.5.1, 2.6.0
> Reporter: Brahma Reddy Battula
> Assignee: Brahma Reddy Battula
> Attachments: HADOOP-111361-003.patch, HADOOP-11361-002.patch,
> HADOOP-11361-004.patch, HADOOP-11361-005.patch, HADOOP-11361-005.patch,
> HADOOP-11361.patch, HDFS-7487.patch
>
>
> {noformat}
> Caused by: java.lang.NullPointerException
> at
> org.apache.hadoop.metrics2.impl.MetricsSourceAdapter.updateAttrCache(MetricsSourceAdapter.java:247)
> at
> org.apache.hadoop.metrics2.impl.MetricsSourceAdapter.updateJmxCache(MetricsSourceAdapter.java:177)
> at
> org.apache.hadoop.metrics2.impl.MetricsSourceAdapter.getAttribute(MetricsSourceAdapter.java:102)
> at
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:647)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]