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

Reply via email to