This is an automated email from the ASF dual-hosted git repository.
danny0405 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git
The following commit(s) were added to refs/heads/master by this push:
new 5fed226c723 [HUDI-8626] Create consistent-hash-metadata file using
#rename (#12394)
5fed226c723 is described below
commit 5fed226c7231b8da4a6e7b978a41300418d79d92
Author: TheR1sing3un <[email protected]>
AuthorDate: Thu Dec 12 15:22:15 2024 +0800
[HUDI-8626] Create consistent-hash-metadata file using #rename (#12394)
---
.../hudi/index/bucket/ConsistentBucketIndexUtils.java | 19 +++++++------------
.../bucket/HoodieSparkConsistentBucketIndex.java | 4 +++-
.../java/org/apache/hudi/storage/HoodieStorage.java | 1 -
3 files changed, 10 insertions(+), 14 deletions(-)
diff --git
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/index/bucket/ConsistentBucketIndexUtils.java
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/index/bucket/ConsistentBucketIndexUtils.java
index 1cd5d110de5..e5014bb8f13 100644
---
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/index/bucket/ConsistentBucketIndexUtils.java
+++
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/index/bucket/ConsistentBucketIndexUtils.java
@@ -40,7 +40,6 @@ import org.slf4j.LoggerFactory;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
@@ -72,7 +71,6 @@ public class ConsistentBucketIndexUtils {
* @param table Hoodie table
* @param partition Table partition
* @param numBuckets Default bucket number
- *
* @return Consistent hashing metadata
*/
public static HoodieConsistentHashingMetadata
loadOrCreateMetadata(HoodieTable table, String partition, int numBuckets) {
@@ -85,7 +83,7 @@ public class ConsistentBucketIndexUtils {
// There is no metadata, so try to create a new one and save it.
HoodieConsistentHashingMetadata metadata = new
HoodieConsistentHashingMetadata(partition, numBuckets);
- if (saveMetadata(table, metadata, false)) {
+ if (saveMetadata(table, metadata)) {
return metadata;
}
@@ -177,25 +175,22 @@ public class ConsistentBucketIndexUtils {
/**
* Saves the metadata into storage
*
- * @param table Hoodie table
- * @param metadata Hashing metadata to be saved
- * @param overwrite Whether to overwrite existing metadata
+ * @param table Hoodie table
+ * @param metadata Hashing metadata to be saved
* @return true if the metadata is saved successfully
*/
- public static boolean saveMetadata(HoodieTable table,
HoodieConsistentHashingMetadata metadata, boolean overwrite) {
+ public static boolean saveMetadata(HoodieTable table,
HoodieConsistentHashingMetadata metadata) {
HoodieStorage storage = table.getStorage();
StoragePath dir = FSUtils.constructAbsolutePath(
table.getMetaClient().getHashingMetadataPath(),
metadata.getPartitionPath());
StoragePath fullPath = new StoragePath(dir, metadata.getFilename());
- try (OutputStream out = storage.create(fullPath, overwrite)) {
- byte[] bytes = metadata.toBytes();
- out.write(bytes);
- out.close();
+ try {
+ storage.createImmutableFileInPath(fullPath,
Option.of(metadata.toBytes()));
return true;
} catch (IOException e) {
LOG.warn("Failed to update bucket metadata: " + metadata, e);
+ return false;
}
- return false;
}
/***
diff --git
a/hudi-client/hudi-spark-client/src/main/java/org/apache/hudi/index/bucket/HoodieSparkConsistentBucketIndex.java
b/hudi-client/hudi-spark-client/src/main/java/org/apache/hudi/index/bucket/HoodieSparkConsistentBucketIndex.java
index 3fc6fe83310..bc8130e38b7 100644
---
a/hudi-client/hudi-spark-client/src/main/java/org/apache/hudi/index/bucket/HoodieSparkConsistentBucketIndex.java
+++
b/hudi-client/hudi-spark-client/src/main/java/org/apache/hudi/index/bucket/HoodieSparkConsistentBucketIndex.java
@@ -103,7 +103,9 @@ public class HoodieSparkConsistentBucketIndex extends
HoodieConsistentBucketInde
.collect(Collectors.toList());
HoodieConsistentHashingMetadata newMeta = new
HoodieConsistentHashingMetadata(meta.getVersion(), meta.getPartitionPath(),
instantTime, meta.getNumBuckets(), seqNo + 1, newNodes);
- ConsistentBucketIndexUtils.saveMetadata(hoodieTable, newMeta, true);
+ if (!ConsistentBucketIndexUtils.saveMetadata(hoodieTable, newMeta)) {
+ throw new HoodieIndexException("Failed to save metadata for partition:
" + partition);
+ }
});
return writeStatuses;
diff --git a/hudi-io/src/main/java/org/apache/hudi/storage/HoodieStorage.java
b/hudi-io/src/main/java/org/apache/hudi/storage/HoodieStorage.java
index 8de04f6903e..8d5cbb38025 100644
--- a/hudi-io/src/main/java/org/apache/hudi/storage/HoodieStorage.java
+++ b/hudi-io/src/main/java/org/apache/hudi/storage/HoodieStorage.java
@@ -313,7 +313,6 @@ public abstract class HoodieStorage implements Closeable {
StoragePath tmpPath = null;
boolean needTempFile = needCreateTempFile();
-
try {
if (!content.isPresent()) {
fsout = create(path, false);