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

    https://github.com/apache/carbondata/pull/2045#discussion_r173887885
  
    --- Diff: 
core/src/main/java/org/apache/carbondata/core/locks/CarbonLockUtil.java ---
    @@ -107,4 +115,37 @@ public static int getLockProperty(String property, int 
defaultValue) {
         }
       }
     
    +  /**
    +   * Currently the segment lock files are not deleted immediately when 
unlock,
    +   * so it needs to delete expired lock files before delete loads.
    +   */
    +  public static void deleteExpiredSegmentLockFiles(CarbonTable 
carbonTable) {
    +    LoadMetadataDetails[] details =
    +        
SegmentStatusManager.readLoadMetadata(carbonTable.getMetadataPath());
    +    if (details != null && details.length > 0) {
    +      AbsoluteTableIdentifier absoluteTableIdentifier = 
carbonTable.getAbsoluteTableIdentifier();
    +      long segmentLockFilesPreservTime =
    +          
CarbonProperties.getInstance().getSegmentLockFilesPreserveHours();
    +      long currTime = System.currentTimeMillis();
    +      for (LoadMetadataDetails oneRow : details) {
    +        if (oneRow.getVisibility().equalsIgnoreCase("false") ||
    +            SegmentStatus.SUCCESS == oneRow.getSegmentStatus() ||
    +            SegmentStatus.LOAD_FAILURE == oneRow.getSegmentStatus() ||
    +            SegmentStatus.LOAD_PARTIAL_SUCCESS == 
oneRow.getSegmentStatus() ||
    +            SegmentStatus.COMPACTED == oneRow.getSegmentStatus()) {
    +          String location = CarbonTablePath
    +              .getLockFilesDirPath(absoluteTableIdentifier.getTablePath()) 
+
    +              CarbonCommonConstants.FILE_SEPARATOR +
    +              CarbonTablePath.addSegmentPrefix(oneRow.getLoadName()) + 
LockUsage.LOCK;
    +          CarbonFile carbonFile =
    +              FileFactory.getCarbonFile(location, 
FileFactory.getFileType(location));
    +          if (carbonFile.exists()) {
    --- End diff --
    
    Added static function 'isFileExist(String filePath)' in FileFactory.
    But I didn't use this function directly, it still needs to use 'CarbonFile' 
to get the last modified time below.


---

Reply via email to