[ 
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)

Reply via email to