vikramahuja1001 commented on a change in pull request #4035:
URL: https://github.com/apache/carbondata/pull/4035#discussion_r534678759



##########
File path: 
core/src/main/java/org/apache/carbondata/core/util/DeleteLoadFolders.java
##########
@@ -173,40 +176,62 @@ public boolean accept(CarbonFile file) {
   }
 
   private static boolean checkIfLoadCanBeDeleted(LoadMetadataDetails oneLoad,
-      boolean isForceDelete) {
-    if ((SegmentStatus.MARKED_FOR_DELETE == oneLoad.getSegmentStatus() ||
-        SegmentStatus.COMPACTED == oneLoad.getSegmentStatus() ||
-        SegmentStatus.INSERT_IN_PROGRESS == oneLoad.getSegmentStatus() ||
-        SegmentStatus.INSERT_OVERWRITE_IN_PROGRESS == 
oneLoad.getSegmentStatus())
-        && oneLoad.getVisibility().equalsIgnoreCase("true")) {
-      if (isForceDelete) {
-        return true;
-      }
-      long deletionTime = oneLoad.getModificationOrDeletionTimestamp();
-      return TrashUtil.isTrashRetentionTimeoutExceeded(deletionTime) && 
CarbonUpdateUtil
-          .isMaxQueryTimeoutExceeded(deletionTime);
+      boolean cleanStaleInProgress, boolean cleanCompactedAndMFD) {
+    if (oneLoad.getVisibility().equalsIgnoreCase("true")) {
+      return checkLoadDeletionLogic(oneLoad, cleanCompactedAndMFD, 
cleanStaleInProgress);
     }
-
     return false;
   }
 
   private static boolean checkIfLoadCanBeDeletedPhysically(LoadMetadataDetails 
oneLoad,
-      boolean isForceDelete) {
+      boolean cleanCompactedAndMFD, boolean cleanStaleInProgress) {
     // Check if the segment is added externally and path is set then do not 
delete it
-    if ((SegmentStatus.MARKED_FOR_DELETE == oneLoad.getSegmentStatus()
-        || SegmentStatus.COMPACTED == oneLoad.getSegmentStatus()) && 
(oneLoad.getPath() == null
-        || oneLoad.getPath().equalsIgnoreCase("NA"))) {
-      if (isForceDelete) {
-        return true;
-      }
-      long deletionTime = oneLoad.getModificationOrDeletionTimestamp();
+    if (oneLoad.getPath() == null || oneLoad.getPath().equalsIgnoreCase("NA")) 
{
+      return checkLoadDeletionLogic(oneLoad, cleanCompactedAndMFD, 
cleanStaleInProgress);
+    }
+    return false;
+  }
 
-      return TrashUtil.isTrashRetentionTimeoutExceeded(deletionTime) && 
CarbonUpdateUtil
+  private static Boolean checkLoadDeletionLogic(LoadMetadataDetails oneLoad,
+      boolean cleanCompactedAndMFD, boolean cleanStaleInProgress) {
+    /*
+     * if cleanStaleInProgress == false and  cleanCompactedAndMFD == false, 
clean MFD and Compacted
+     *  segments after trashtimeout(7days) && query timeout(1 hr)
+     * if cleanStaleInProgress == false and  cleanCompactedAndMFD == true, 
clean MFD and Compacted
+     *  segments immediately
+     * if cleanStaleInProgress == true and  cleanCompactedAndMFD == false, 
clean Stale Inprogress
+     *  segments after 7 days(taking carbon.trash.retention.time value)
+     * if cleanStaleInProgress == true and  cleanCompactedAndMFD == true, 
clean MFD, Compacted and
+     *  stale inprogress segments immediately.
+     */
+    if (!cleanCompactedAndMFD && !cleanStaleInProgress) {
+      if (SegmentStatus.COMPACTED == oneLoad.getSegmentStatus() || 
SegmentStatus
+          .MARKED_FOR_DELETE == oneLoad.getSegmentStatus()) {
+        long deletionTime = oneLoad.getModificationOrDeletionTimestamp();
+        return TrashUtil.isTrashRetentionTimeoutExceeded(deletionTime) && 
CarbonUpdateUtil
           .isMaxQueryTimeoutExceeded(deletionTime);
-
+      }
+      return false;
+    } else if (cleanCompactedAndMFD && !cleanStaleInProgress) {

Review comment:
       previously forceDelete would delete MFD, Compacted and stale INprogress 
segments immediately. cleanCompactedAndMFD means only delete MFD, 
Compacted(immediately)  and cleanStaleInProgress means only delete 
staleInprogress segments.




----------------------------------------------------------------
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:
us...@infra.apache.org


Reply via email to