[
https://issues.apache.org/jira/browse/HADOOP-10062?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14278135#comment-14278135
]
Sangjin Lee commented on HADOOP-10062:
--------------------------------------
OK, after looking into it a little more I believe [~sinchii]'s original patch
is essentially right. The barrier usage is obviously wrong, but what might be
more relevant is the following line of code in
MetricsSystemImpl.publishMetricsNow():
{code}
publishMetrics(sampleMetrics(), true);
{code}
Although sampleMetrics() and publishMetrics() are individually synchronized,
the line as a whole is invoked without synchronization. Thus it is racy, and
the publishing order of the samples can be inverted.
Somewhat apart from this, the publishMetricsNow() method should be synchronized
to be thread safe (as sinks is not a thread-safe data structure). I'll post
that patch shortly.
> TestMetricsSystemImpl#testMultiThreadedPublish fails on trunk
> -------------------------------------------------------------
>
> Key: HADOOP-10062
> URL: https://issues.apache.org/jira/browse/HADOOP-10062
> Project: Hadoop Common
> Issue Type: Bug
> Components: metrics
> Affects Versions: 3.0.0
> Environment: CentOS 6.4, Oracle JDK 1.6.0_31, JDK1.7.0_45
> Reporter: Shinichi Yamashita
> Priority: Minor
> Attachments: HADOOP-10062-failed.txt, HADOOP-10062-success.txt,
> HADOOP-10062.patch, HADOOP-10062.patch
>
>
> TestMetricsSystemInpl#testMultiThreadedPublish failed with "Metrics not
> collected"
> {code}
> Running org.apache.hadoop.metrics2.impl.TestMetricsSystemImpl
> Tests run: 6, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 1.688 sec <<<
> FAILURE! - in org.apache.hadoop.metrics2.impl.TestMetricsSystemImpl
> testMultiThreadedPublish(org.apache.hadoop.metrics2.impl.TestMetricsSystemImpl)
> Time elapsed: 0.056 sec <<< FAILURE!
> java.lang.AssertionError: Metric not collected!
> Metric not collected!
> Metric not collected!
> Metric not collected!
> Metric not collected!
> Metric not collected!
> Metric not collected!
> Metric not collected!
> Metric not collected!
> Passed
> at org.junit.Assert.fail(Assert.java:93)
> at org.junit.Assert.assertTrue(Assert.java:43)
> at
> org.apache.hadoop.metrics2.impl.TestMetricsSystemImpl.testMultiThreadedPublish(TestMetricsSystemImpl.java:232)
> Results :
> Failed tests:
> TestMetricsSystemImpl.testMultiThreadedPublish:232 Metric not collected!
> Metric not collected!
> Metric not collected!
> Metric not collected!
> Metric not collected!
> Metric not collected!
> Metric not collected!
> Metric not collected!
> Metric not collected!
> Passed
> Tests run: 6, Failures: 1, Errors: 0, Skipped: 0
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)