[ 
https://issues.apache.org/jira/browse/HBASE-5010?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mikhail Bautin updated HBASE-5010:
----------------------------------

    Description: 
In ScanWildcardColumnTracker we have

{code:java}
 
  this.oldestStamp = EnvironmentEdgeManager.currentTimeMillis() - ttl;

  ...

  private boolean isExpired(long timestamp) {
    return timestamp < oldestStamp;
  }
{code}

but this time range filtering does not participate in HFile selection. In one 
real case this caused next() calls to time out because all KVs in a table got 
expired, but next() had to iterate over the whole table to find that out. We 
should be able to filter out those HFiles right away. I think a reasonable 
approach is to add a "default timerange filter" to every scan for a CF with a 
finite TTL and utilize existing filtering in 
StoreFile.Reader.passesTimerangeFilter.


  was:
In ScanWildcardColumnTracker we have

{
this.oldestStamp = EnvironmentEdgeManager.currentTimeMillis() - ttl;

...

  private boolean isExpired(long timestamp) {
    return timestamp < oldestStamp;
  }
}

but this time range filtering does not participate in HFile selection. In one 
real case this caused next() calls to time out because all KVs in a table got 
expired, but next() had to iterate over the whole table to find that out. We 
should be able to filter out those HFiles right away. I think a reasonable 
approach is to add a "default timerange filter" to every scan for a CF with a 
finite TTL and utilize existing filtering in 
StoreFile.Reader.passesTimerangeFilter.


    
> Filter HFiles based on TTL
> --------------------------
>
>                 Key: HBASE-5010
>                 URL: https://issues.apache.org/jira/browse/HBASE-5010
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Mikhail Bautin
>            Assignee: Mikhail Bautin
>
> In ScanWildcardColumnTracker we have
> {code:java}
>  
>   this.oldestStamp = EnvironmentEdgeManager.currentTimeMillis() - ttl;
>   ...
>   private boolean isExpired(long timestamp) {
>     return timestamp < oldestStamp;
>   }
> {code}
> but this time range filtering does not participate in HFile selection. In one 
> real case this caused next() calls to time out because all KVs in a table got 
> expired, but next() had to iterate over the whole table to find that out. We 
> should be able to filter out those HFiles right away. I think a reasonable 
> approach is to add a "default timerange filter" to every scan for a CF with a 
> finite TTL and utilize existing filtering in 
> StoreFile.Reader.passesTimerangeFilter.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to