Github user ravipesala commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/1702#discussion_r158520072
--- Diff:
processing/src/main/java/org/apache/carbondata/processing/util/DeleteLoadFolders.java
---
@@ -124,27 +148,50 @@ private static boolean
checkIfLoadCanBeDeleted(LoadMetadataDetails oneLoad,
return false;
}
+ private static LoadMetadataDetails getCurrentLoadStatusOfSegment(String
segmentId,
+ String metadataPath) {
+ LoadMetadataDetails[] currentDetails =
SegmentStatusManager.readLoadMetadata(metadataPath);
+ for (LoadMetadataDetails oneLoad : currentDetails) {
+ if (oneLoad.getLoadName().equalsIgnoreCase(segmentId)) {
+ return oneLoad;
+ }
+ }
+ return null;
+ }
+
public static boolean deleteLoadFoldersFromFileSystem(
AbsoluteTableIdentifier absoluteTableIdentifier, boolean
isForceDelete,
- LoadMetadataDetails[] details) {
+ LoadMetadataDetails[] details, String metadataPath) {
boolean isDeleted = false;
if (details != null && details.length != 0) {
for (LoadMetadataDetails oneLoad : details) {
if (checkIfLoadCanBeDeleted(oneLoad, isForceDelete)) {
- String path = getSegmentPath(absoluteTableIdentifier, 0,
oneLoad);
- boolean deletionStatus =
physicalFactAndMeasureMetadataDeletion(path);
- if (deletionStatus) {
- isDeleted = true;
- oneLoad.setVisibility("false");
- LOGGER.info("Info: Deleted the load " + oneLoad.getLoadName());
+ ICarbonLock segmentLock =
CarbonLockFactory.getCarbonLockObj(absoluteTableIdentifier,
+ CarbonTablePath.addSegmentPrefix(oneLoad.getLoadName()) +
LockUsage.LOCK);
+ try {
+ if (segmentLock.lockWithRetries()) {
--- End diff --
Better acquire locks for in-progress status segments not for others
---