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

ASF GitHub Bot commented on TEPHRA-216:
---------------------------------------

Github user poornachandra commented on a diff in the pull request:

    https://github.com/apache/incubator-tephra/pull/34#discussion_r100648648
  
    --- Diff: 
tephra-hbase-compat-1.1-base/src/main/java/org/apache/tephra/hbase/txprune/HBaseTransactionPruningPlugin.java
 ---
    @@ -322,6 +333,28 @@ private long computePruneUpperBound(TimeRegions 
timeRegions) throws IOException
         return -1;
       }
     
    +  private Map<byte[], Long> handleEmptyRegions(long 
inactiveTransactionBound,
    +                                               SortedSet<byte[]> 
transactionalRegions,
    +                                               Map<byte[], Long> 
pruneUpperBoundRegions) throws IOException {
    +    long inactiveTransactionBoundTime = 
TxUtils.getTimestamp(inactiveTransactionBound);
    +    SortedSet<byte[]> emptyRegions =
    +      
dataJanitorState.getEmptyRegionsAfterTime(inactiveTransactionBoundTime, 
transactionalRegions);
    +    LOG.debug("Got empty transactional regions for inactive transaction 
bound time {}: {}",
    +              inactiveTransactionBoundTime, 
Iterables.transform(emptyRegions, TimeRegions.BYTE_ARR_TO_STRING_FN));
    +
    +    // The regions that are recorded as empty after 
inactiveTransactionBoundTime will not have invalid data
    +    // for transactions started before or on inactiveTransactionBoundTime. 
Hence we can consider the prune upper bound
    +    // for these empty regions as inactiveTransactionBound
    +    Map<byte[], Long> pubWithEmptyRegions = new 
TreeMap<>(Bytes.BYTES_COMPARATOR);
    +    pubWithEmptyRegions.putAll(pruneUpperBoundRegions);
    +    for (byte[] emptyRegion : emptyRegions) {
    +      if (!pruneUpperBoundRegions.containsKey(emptyRegion)) {
    +        pubWithEmptyRegions.put(emptyRegion, inactiveTransactionBound);
    --- End diff --
    
    If an empty region does not contain a prune upper bound value then we put 
`inactiveTransactionBound` as its prune upper bound. How do you suggest this be 
changed?


> Invalid Transaction List Pruning will not proceed if there are empty 
> transactional tables
> -----------------------------------------------------------------------------------------
>
>                 Key: TEPHRA-216
>                 URL: https://issues.apache.org/jira/browse/TEPHRA-216
>             Project: Tephra
>          Issue Type: Sub-task
>    Affects Versions: 0.11.0-incubating
>            Reporter: Gokul Gunasekaran
>            Assignee: Poorna Chandra
>
> Since empty table/regions might not undergo major compaction, the prune upper 
> bound of these regions will never have a value and thus will limit the 
> progress of invalid list transaction pruning.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to