hadoop-yarn-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Joep Rottinghuis (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (YARN-3726) Fix TestHBaseTimelineWriterImpl unit test failure by fixing it's test data
Date Thu, 28 May 2015 16:42:18 GMT

    [ https://issues.apache.org/jira/browse/YARN-3726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14563222#comment-14563222

Joep Rottinghuis commented on YARN-3726:

Aside from the immediate fix for the unit test, this makes me wonder if we should protect
against this in the writer itself for production cases.
If somebody tries to write an entity (metric) with a date older than the TTL, should we simply
refuse and throw an IOException?
That way at least folks notice, otherwise we simply add load and silently ignore, as what
happened with the unit test. If was only the confirmation that the data was there that failed,
not the code trying to write something that clearly didn't make sense.

> Fix TestHBaseTimelineWriterImpl unit test failure by fixing it's test data
> --------------------------------------------------------------------------
>                 Key: YARN-3726
>                 URL: https://issues.apache.org/jira/browse/YARN-3726
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: timelineserver
>            Reporter: Vrushali C
>            Assignee: Vrushali C
>             Fix For: YARN-2928
>         Attachments: YARN-3726-YARN-2928.001.patch
> There is a very fascinating  bug that was introduced by the test data in the metrics
time series check in the unit test in TestHBaseTimelineWriterImpl in YARN-3411. 
> The unit test failure seen is 
> {code}
> Error Message
> expected:<1> but was:<6>
> Stacktrace
> java.lang.AssertionError: expected:<1> but was:<6>
> 	at org.junit.Assert.fail(Assert.java:88)
> 	at org.junit.Assert.failNotEquals(Assert.java:743)
> 	at org.junit.Assert.assertEquals(Assert.java:118)
> 	at org.junit.Assert.assertEquals(Assert.java:555)
> 	at org.junit.Assert.assertEquals(Assert.java:542)
> 	at org.apache.hadoop.yarn.server.timelineservice.storage.TestHBaseTimelineWriterImpl.checkMetricsTimeseries(TestHBaseTimelineWriterImpl.java:219)
> 	at org.apache.hadoop.yarn.server.timelineservice.storage.TestHBaseTimelineWriterImpl.testWriteEntityToHBase(TestHBaseTimelineWriterImpl.java:204)
> {code}
> The test data had 6 timestamps that belonged to 22nd April 2015. When the patch in YARN-3411
was submitted and tested by Hadoop QA on May 19th, the unit test was working fine. Fast forward
a few more days and the test started failing. There has been no relevant code change or package
version change interim. The change that is triggering the unit test failure is the passage
of time.
> The reason for test failure is that the metrics time series data lives in a column family
which has a TTL set to 30 days. Metrics time series data was written to the mini hbase cluster
with cell timestamps set to April 22nd. Based on the column family configuration, hbase started
deleting the data that was older than 30 days and the test started failing. The last value
is retained, hence there is one value fetched from hbase. 
> Will submit a patch with the test case fixed shortly. 

This message was sent by Atlassian JIRA

View raw message