[
https://issues.apache.org/jira/browse/HIVE-27020?focusedWorklogId=857253&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-857253
]
ASF GitHub Bot logged work on HIVE-27020:
-----------------------------------------
Author: ASF GitHub Bot
Created on: 16/Apr/23 18:13
Start Date: 16/Apr/23 18:13
Worklog Time Spent: 10m
Work Description: SourabhBadhya commented on code in PR #4091:
URL: https://github.com/apache/hive/pull/4091#discussion_r1167991491
##########
standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java:
##########
@@ -60,20 +60,20 @@
public class TxnUtils {
private static final Logger LOG = LoggerFactory.getLogger(TxnUtils.class);
- public static ValidTxnList createValidTxnListForCleaner(GetOpenTxnsResponse
txns, long minOpenTxnGLB) {
- long highWaterMark = minOpenTxnGLB - 1;
+ public static ValidTxnList
createValidTxnListForCompactionCleaner(GetOpenTxnsResponse txns, long
minOpenTxn) {
+ long highWatermark = minOpenTxn - 1;
long[] abortedTxns = new long[txns.getOpen_txnsSize()];
BitSet abortedBits = BitSet.valueOf(txns.getAbortedBits());
int i = 0;
for(long txnId : txns.getOpen_txns()) {
- if(txnId > highWaterMark) {
+ if(txnId > highWatermark) {
Review Comment:
Done.
##########
standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java:
##########
@@ -60,20 +60,20 @@
public class TxnUtils {
private static final Logger LOG = LoggerFactory.getLogger(TxnUtils.class);
- public static ValidTxnList createValidTxnListForCleaner(GetOpenTxnsResponse
txns, long minOpenTxnGLB) {
- long highWaterMark = minOpenTxnGLB - 1;
+ public static ValidTxnList
createValidTxnListForCompactionCleaner(GetOpenTxnsResponse txns, long
minOpenTxn) {
+ long highWatermark = minOpenTxn - 1;
long[] abortedTxns = new long[txns.getOpen_txnsSize()];
BitSet abortedBits = BitSet.valueOf(txns.getAbortedBits());
int i = 0;
for(long txnId : txns.getOpen_txns()) {
- if(txnId > highWaterMark) {
+ if(txnId > highWatermark) {
break;
}
if(abortedBits.get(i)) {
Review Comment:
Done
##########
standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java:
##########
@@ -82,7 +82,29 @@ public static ValidTxnList
createValidTxnListForCleaner(GetOpenTxnsResponse txns
bitSet.set(0, abortedTxns.length);
//add ValidCleanerTxnList? - could be problematic for all the places that
read it from
// string as they'd have to know which object to instantiate
- return new ValidReadTxnList(abortedTxns, bitSet, highWaterMark,
Long.MAX_VALUE);
+ return new ValidReadTxnList(abortedTxns, bitSet, highWatermark,
Long.MAX_VALUE);
+ }
+
+ public static ValidTxnList
createValidTxnListForAbortedTxnCleaner(GetOpenTxnsResponse txns, long
minOpenTxn) {
+ long highWatermark = minOpenTxn - 1;
+ long[] exceptions = new long[txns.getOpen_txnsSize()];
+ int i = 0;
+ BitSet abortedBits = BitSet.valueOf(txns.getAbortedBits());
+ // getOpen_txns() guarantees that the list contains only aborted & open
txns.
+ // exceptions list must contain both txn types since validWriteIdList
filters out the aborted ones and valid ones for that table.
+ // If a txn is not in exception list, it is considered as a valid one and
thought of as an uncompacted write.
+ // See TxnHandler#getValidWriteIdsForTable() for more details.
+ for(long txnId : txns.getOpen_txns()) {
Review Comment:
Done
Issue Time Tracking
-------------------
Worklog Id: (was: 857253)
Time Spent: 13h (was: 12h 50m)
> Implement a separate handler to handle aborted transaction cleanup
> ------------------------------------------------------------------
>
> Key: HIVE-27020
> URL: https://issues.apache.org/jira/browse/HIVE-27020
> Project: Hive
> Issue Type: Sub-task
> Reporter: Sourabh Badhya
> Assignee: Sourabh Badhya
> Priority: Major
> Labels: pull-request-available
> Time Spent: 13h
> Remaining Estimate: 0h
>
> As described in the parent task, once the cleaner is separated into different
> entities, implement a separate handler which can create requests for aborted
> transactions cleanup. This would move the aborted transaction cleanup
> exclusively to the cleaner.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)