Github user zzcclp commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2045#discussion_r175252906
--- Diff:
core/src/main/java/org/apache/carbondata/core/locks/CarbonLockUtil.java ---
@@ -107,4 +114,36 @@ 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
+
.getSegmentLockFilePath(absoluteTableIdentifier.getTablePath(),
+ oneRow.getLoadName());
+ CarbonFile carbonFile =
+ FileFactory.getCarbonFile(location,
FileFactory.getFileType(location));
+ if (carbonFile.exists()) {
--- End diff --
Done
---