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

Istvan Toth commented on HBASE-27058:
-------------------------------------

I don't think we could easily use IncrementingEnvironmentEdge, as  we don't 
know how many times it would be called outside of the test code, which would 
throw the calculations off.

EnvironmentEdge is inherently problematic, as it's desired behaviour is not 
well defined.
In the case of the Phoenix tests, we use it for checking timestamp based 
behaviour, so our preference would be to 
only use it when dealing with timestamps that are related to the Hbase store 
data, but not te bu used for chores, and other internal timers.

As [~gjacoby] said, it would be best if we could avoid polling, and have API 
options for synchronous operations so that we can avoid polling for things like 
splits, merges and compactions in tests.

> Admin#getLastMajorCompactionTimestamp() doesn't get updated when the 
> EnvironmentEdgeManager clock is stopped
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-27058
>                 URL: https://issues.apache.org/jira/browse/HBASE-27058
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 2.5.0
>            Reporter: Istvan Toth
>            Priority: Major
>              Labels: test
>
> In Hbase 2.0-2.4 it is possible to check for a finished compaction by polling 
> Admin.getLastMajorCompactionTimestamp() for the table under compaction, even 
> when the clock is stopped via EnvironmentEdgeManager.
> However, in Hbase 2.5 the Admin.getLastMajorCompactionTimestamp() will not be 
> updated even after the compaction is finished, and getCompactionState() 
> returns NONE.
> I am not even sure that this is bug, however, this has broken one of our 
> Phoenix tests, and may cause problems for others.
> This is the test code that breaks:
> [https://github.com/apache/phoenix/blob/8aa825ed88828a99d40fdb68eb2f930981cd8a6b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java#L818]
> Admin.getLastMajorCompactionTimestamp() seems to take the value from the 
> Metrics, so I guess that the metrics no longer get updated somewhere when the 
> clock is stopped.
> I did not dig deeper than that.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to