[HUDI-1744] rollback fails on mor table when the partition path hasn't any files (#2749)
Co-authored-by: lrz <lrz@lrzdeMacBook-Pro.local>
This commit is contained in:
@@ -112,6 +112,9 @@ public class RollbackUtils {
|
|||||||
String commit = instantToRollback.getTimestamp();
|
String commit = instantToRollback.getTimestamp();
|
||||||
HoodieWriteConfig config = table.getConfig();
|
HoodieWriteConfig config = table.getConfig();
|
||||||
List<String> partitions = FSUtils.getAllPartitionPaths(context, config.getMetadataConfig(), table.getMetaClient().getBasePath());
|
List<String> partitions = FSUtils.getAllPartitionPaths(context, config.getMetadataConfig(), table.getMetaClient().getBasePath());
|
||||||
|
if (partitions.isEmpty()) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
int sparkPartitions = Math.max(Math.min(partitions.size(), config.getRollbackParallelism()), 1);
|
int sparkPartitions = Math.max(Math.min(partitions.size(), config.getRollbackParallelism()), 1);
|
||||||
context.setJobStatus(RollbackUtils.class.getSimpleName(), "Generate all rollback requests");
|
context.setJobStatus(RollbackUtils.class.getSimpleName(), "Generate all rollback requests");
|
||||||
return context.flatMap(partitions, partitionPath -> {
|
return context.flatMap(partitions, partitionPath -> {
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
package org.apache.hudi.table.action.rollback;
|
package org.apache.hudi.table.action.rollback;
|
||||||
|
|
||||||
import org.apache.hudi.avro.model.HoodieRollbackPartitionMetadata;
|
import org.apache.hudi.avro.model.HoodieRollbackPartitionMetadata;
|
||||||
|
import org.apache.hudi.client.SparkRDDWriteClient;
|
||||||
import org.apache.hudi.common.model.FileSlice;
|
import org.apache.hudi.common.model.FileSlice;
|
||||||
import org.apache.hudi.common.model.HoodieFileGroup;
|
import org.apache.hudi.common.model.HoodieFileGroup;
|
||||||
import org.apache.hudi.common.model.HoodieLogFile;
|
import org.apache.hudi.common.model.HoodieLogFile;
|
||||||
@@ -155,4 +156,19 @@ public class TestMergeOnReadRollbackActionExecutor extends HoodieClientRollbackT
|
|||||||
true);
|
true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test Cases for rollbacking when has not base file.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testRollbackWhenFirstCommitFail() throws Exception {
|
||||||
|
|
||||||
|
HoodieWriteConfig config = HoodieWriteConfig.newBuilder().withPath(basePath).build();
|
||||||
|
|
||||||
|
try (SparkRDDWriteClient client = getHoodieWriteClient(config)) {
|
||||||
|
client.startCommitWithTime("001");
|
||||||
|
client.insert(jsc.emptyRDD(), "001");
|
||||||
|
client.rollback("001");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user