pvargacl commented on a change in pull request #1583:
URL: https://github.com/apache/hive/pull/1583#discussion_r509322335
##########
File path: ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/Cleaner.java
##########
@@ -244,7 +249,32 @@ private void removeFiles(String location, ValidWriteIdList
writeIdList, Compacti
obsoleteDirs.addAll(dir.getAbortedDirectories());
List<Path> filesToDelete = new ArrayList<>(obsoleteDirs.size());
StringBuilder extraDebugInfo = new StringBuilder("[");
+ boolean delayedCleanupEnabled =
conf.getBoolVar(HiveConf.ConfVars.HIVE_COMPACTOR_DELAYED_CLEANUP_ENABLED);
+
for (Path stat : obsoleteDirs) {
+ if (delayedCleanupEnabled) {
+ String filename = stat.toString();
+ if (filename.startsWith(AcidUtils.BASE_PREFIX)) {
+ long writeId = AcidUtils.ParsedBase.parseBase(stat).getWriteId();
+ if (ci.type == CompactionType.MINOR) {
+ LOG.info("Skipping base dir " + stat + " as this cleanup is for
minor compaction"
+ + ", compaction id " + ci.id);
+ continue;
+ } else if (writeId > writeIdList.getHighWatermark()) {
+ LOG.info("Skipping base dir " + stat + " deletion as WriteId of
this base dir is"
+ + " greater than highWaterMark for compaction id " + ci.id);
+ continue;
+ }
+ }
+ else if (filename.startsWith(AcidUtils.DELTA_PREFIX) ||
filename.startsWith(AcidUtils.DELETE_DELTA_PREFIX)) {
+ AcidUtils.ParsedDelta delta = AcidUtils.parsedDelta(stat, fs);
+ if (delta.getMaxWriteId() > writeIdList.getHighWatermark()) {
Review comment:
I am not sure about this check. I guess this is here, to prepare for the
case when there were two compaction, and we are doing the cleanup of the first
one and don't want to clean up the stuff that was compacted by the second one.
But the cleaner validWriteId list is topped by the minOpenTxnId, so if
everything was committed the writeIdList.getHighWatermark() will be
NEXT_WRITE_ID -1 , so it won't prevent the cleaning of the second compacted
stuff. Maybe you can use the highestWriteId from the CompactionInfo? Not sure.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]