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

Ravi Prakash commented on HADOOP-11182:
---------------------------------------

Thanks a lot Sascha! The patch looks good to me. I'll commit it shortly.
Its strange that you are unable to run test-patch successfully. On my laptop it 
usually takes 15-20 minutes. I was then able to see the file 
newPatchFindbugsWarninghadoop-common.html in /tmp . I am uploading what was 
produced for your perusal (which btw I checked had no instance of metrics2) . I 
did get 67 warnings but I'm guessing that's probably an error in the 
test-patch. 

Its probably worthwhile to setup your dev environment properly if you plan on 
continuing to contribute. Unfortunately it is a bit of a chore right now :( 

> GraphiteSink emits wrong timestamps
> -----------------------------------
>
>                 Key: HADOOP-11182
>                 URL: https://issues.apache.org/jira/browse/HADOOP-11182
>             Project: Hadoop Common
>          Issue Type: Bug
>    Affects Versions: 2.5.0, 2.5.1
>            Reporter: Sascha Coenen
>         Attachments: HADOOP-11182-GraphiteSink-v1.patch, 
> HADOOP-11182-v2.patch, HADOOP-11182-v3.patch
>
>
> the org.apache.hadoop.metrics2.sink.GraphiteSink class emits metrics at the 
> configured time period, but the timestamps written only change every 128 
> seconds, even it the configured time period in the configuration file is much 
> shorter.
> This is due to a bug in line 93:
> {code:java}
> 092            // Round the timestamp to second as Graphite accepts it in 
> such format.
> 093            int timestamp = Math.round(record.timestamp() / 1000.0f);
> {code}
> The timestamp property is a long and is divided by a float which yields a 
> result that is not precise enough and yields same valued results for 
> timestamps that lie up to 128 seconds apart. Also, the result is then written 
> into an int variable.
> One solution would be to divide by 1000.0d, but the best fix would be to not 
> even convert to a decimal format in the first place. Instead one could 
> replace the line with the following:
> {code:java}
>    long timestamp = record.timestamp() / 1000L;
> {code}



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

Reply via email to