This is an automated email from the ASF dual-hosted git repository.

forwardxu 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 ef3a17e3d97 [HUDI-5692] SpillableMapBasePath should be lazily loaded 
(#7837)
ef3a17e3d97 is described below

commit ef3a17e3d97428a6f0d6e7ac888747d65a8792c5
Author: Rex(Hui) An <[email protected]>
AuthorDate: Sat Feb 4 15:14:52 2023 +0800

    [HUDI-5692] SpillableMapBasePath should be lazily loaded (#7837)
---
 .../apache/hudi/cli/commands/HoodieLogFileCommand.java   |  2 +-
 .../hudi/cli/commands/TestHoodieLogFileCommand.java      |  2 +-
 .../java/org/apache/hudi/config/HoodieMemoryConfig.java  | 16 ++++++++--------
 .../java/org/apache/hudi/config/HoodieWriteConfig.java   |  3 ++-
 .../apache/hudi/sink/compact/FlinkCompactionConfig.java  |  2 +-
 .../testsuite/reader/DFSHoodieDatasetInputReader.java    |  2 +-
 .../procedures/ShowHoodieLogFileRecordsProcedure.scala   |  2 +-
 7 files changed, 15 insertions(+), 14 deletions(-)

diff --git 
a/hudi-cli/src/main/java/org/apache/hudi/cli/commands/HoodieLogFileCommand.java 
b/hudi-cli/src/main/java/org/apache/hudi/cli/commands/HoodieLogFileCommand.java
index 075b809e05c..d85d1c36fd0 100644
--- 
a/hudi-cli/src/main/java/org/apache/hudi/cli/commands/HoodieLogFileCommand.java
+++ 
b/hudi-cli/src/main/java/org/apache/hudi/cli/commands/HoodieLogFileCommand.java
@@ -218,7 +218,7 @@ public class HoodieLogFileCommand {
               
.withBufferSize(HoodieMemoryConfig.MAX_DFS_STREAM_BUFFER_SIZE.defaultValue())
               .withMaxMemorySizeInBytes(
                   
HoodieMemoryConfig.DEFAULT_MAX_MEMORY_FOR_SPILLABLE_MAP_IN_BYTES)
-              
.withSpillableMapBasePath(HoodieMemoryConfig.SPILLABLE_MAP_BASE_PATH.defaultValue())
+              
.withSpillableMapBasePath(HoodieMemoryConfig.getDefaultSpillableMapBasePath())
               
.withDiskMapType(HoodieCommonConfig.SPILLABLE_DISK_MAP_TYPE.defaultValue())
               
.withBitCaskDiskMapCompressionEnabled(HoodieCommonConfig.DISK_MAP_BITCASK_COMPRESSION_ENABLED.defaultValue())
               
.withRecordMerger(HoodieRecordUtils.loadRecordMerger(HoodieAvroRecordMerger.class.getName()))
diff --git 
a/hudi-cli/src/test/java/org/apache/hudi/cli/commands/TestHoodieLogFileCommand.java
 
b/hudi-cli/src/test/java/org/apache/hudi/cli/commands/TestHoodieLogFileCommand.java
index 261002c9327..d964a127683 100644
--- 
a/hudi-cli/src/test/java/org/apache/hudi/cli/commands/TestHoodieLogFileCommand.java
+++ 
b/hudi-cli/src/test/java/org/apache/hudi/cli/commands/TestHoodieLogFileCommand.java
@@ -229,7 +229,7 @@ public class TestHoodieLogFileCommand extends 
CLIFunctionalTestHarness {
             Boolean.parseBoolean(
                 
HoodieCompactionConfig.COMPACTION_REVERSE_LOG_READ_ENABLE.defaultValue()))
         
.withBufferSize(HoodieMemoryConfig.MAX_DFS_STREAM_BUFFER_SIZE.defaultValue())
-        
.withSpillableMapBasePath(HoodieMemoryConfig.SPILLABLE_MAP_BASE_PATH.defaultValue())
+        
.withSpillableMapBasePath(HoodieMemoryConfig.getDefaultSpillableMapBasePath())
         
.withDiskMapType(HoodieCommonConfig.SPILLABLE_DISK_MAP_TYPE.defaultValue())
         
.withBitCaskDiskMapCompressionEnabled(HoodieCommonConfig.DISK_MAP_BITCASK_COMPRESSION_ENABLED.defaultValue())
         
.withRecordMerger(HoodieRecordUtils.loadRecordMerger(HoodieAvroRecordMerger.class.getName()))
diff --git 
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/HoodieMemoryConfig.java
 
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/HoodieMemoryConfig.java
index 960ec61dc0b..480cf1797f7 100644
--- 
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/HoodieMemoryConfig.java
+++ 
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/HoodieMemoryConfig.java
@@ -23,7 +23,6 @@ import org.apache.hudi.common.config.ConfigGroups;
 import org.apache.hudi.common.config.ConfigProperty;
 import org.apache.hudi.common.config.HoodieConfig;
 import org.apache.hudi.common.util.FileIOUtils;
-import org.apache.hudi.common.util.Option;
 
 import javax.annotation.concurrent.Immutable;
 import java.io.File;
@@ -80,11 +79,7 @@ public class HoodieMemoryConfig extends HoodieConfig {
 
   public static final ConfigProperty<String> SPILLABLE_MAP_BASE_PATH = 
ConfigProperty
       .key("hoodie.memory.spillable.map.path")
-      .defaultValue("/tmp/")
-      .withInferFunction(cfg -> {
-        String[] localDirs = FileIOUtils.getConfiguredLocalDirs();
-        return (localDirs != null && localDirs.length > 0) ? 
Option.of(localDirs[0]) : Option.empty();
-      })
+      .noDefaultValue()
       .withDocumentation("Default file path for spillable map");
 
   public static final ConfigProperty<Double> WRITESTATUS_FAILURE_FRACTION = 
ConfigProperty
@@ -121,9 +116,9 @@ public class HoodieMemoryConfig extends HoodieConfig {
   /** @deprecated Use {@link #SPILLABLE_MAP_BASE_PATH} and its methods instead 
*/
   @Deprecated
   public static final String SPILLABLE_MAP_BASE_PATH_PROP = 
SPILLABLE_MAP_BASE_PATH.key();
-  /** @deprecated Use {@link #SPILLABLE_MAP_BASE_PATH} and its methods instead 
*/
+  /** @deprecated Use getDefaultSpillableMapBasePath() instead */
   @Deprecated
-  public static final String DEFAULT_SPILLABLE_MAP_BASE_PATH = 
SPILLABLE_MAP_BASE_PATH.defaultValue();
+  public static final String DEFAULT_SPILLABLE_MAP_BASE_PATH = 
getDefaultSpillableMapBasePath();
   /** @deprecated Use {@link #WRITESTATUS_FAILURE_FRACTION} and its methods 
instead */
   @Deprecated
   public static final String WRITESTATUS_FAILURE_FRACTION_PROP = 
WRITESTATUS_FAILURE_FRACTION.key();
@@ -135,6 +130,11 @@ public class HoodieMemoryConfig extends HoodieConfig {
     super();
   }
 
+  public static String getDefaultSpillableMapBasePath() {
+    String[] localDirs = FileIOUtils.getConfiguredLocalDirs();
+    return (localDirs != null && localDirs.length > 0) ? localDirs[0] : 
"/tmp/";
+  }
+
   public static HoodieMemoryConfig.Builder newBuilder() {
     return new Builder();
   }
diff --git 
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/HoodieWriteConfig.java
 
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/HoodieWriteConfig.java
index f56defe7eac..7988f7befef 100644
--- 
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/HoodieWriteConfig.java
+++ 
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/config/HoodieWriteConfig.java
@@ -2090,7 +2090,8 @@ public class HoodieWriteConfig extends HoodieConfig {
   }
 
   public String getSpillableMapBasePath() {
-    return getString(HoodieMemoryConfig.SPILLABLE_MAP_BASE_PATH);
+    return 
Option.ofNullable(getString(HoodieMemoryConfig.SPILLABLE_MAP_BASE_PATH))
+        .orElseGet(HoodieMemoryConfig::getDefaultSpillableMapBasePath);
   }
 
   public double getWriteStatusFailureFraction() {
diff --git 
a/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/sink/compact/FlinkCompactionConfig.java
 
b/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/sink/compact/FlinkCompactionConfig.java
index 0308d246333..068c39d838c 100644
--- 
a/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/sink/compact/FlinkCompactionConfig.java
+++ 
b/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/sink/compact/FlinkCompactionConfig.java
@@ -123,7 +123,7 @@ public class FlinkCompactionConfig extends Configuration {
   public String compactionPlanInstant;
 
   @Parameter(names = {"--spillable_map_path"}, description = "Default file 
path prefix for spillable map.")
-  public String spillableMapPath = 
HoodieMemoryConfig.SPILLABLE_MAP_BASE_PATH.defaultValue();
+  public String spillableMapPath = 
HoodieMemoryConfig.getDefaultSpillableMapBasePath();
 
   /**
    * Transforms a {@code HoodieFlinkCompaction.config} into {@code 
Configuration}.
diff --git 
a/hudi-integ-test/src/main/java/org/apache/hudi/integ/testsuite/reader/DFSHoodieDatasetInputReader.java
 
b/hudi-integ-test/src/main/java/org/apache/hudi/integ/testsuite/reader/DFSHoodieDatasetInputReader.java
index 0e3f27e2e3b..5703cc6cead 100644
--- 
a/hudi-integ-test/src/main/java/org/apache/hudi/integ/testsuite/reader/DFSHoodieDatasetInputReader.java
+++ 
b/hudi-integ-test/src/main/java/org/apache/hudi/integ/testsuite/reader/DFSHoodieDatasetInputReader.java
@@ -287,7 +287,7 @@ public class DFSHoodieDatasetInputReader extends 
DFSDeltaInputReader {
           .withReadBlocksLazily(true)
           .withReverseReader(false)
           
.withBufferSize(HoodieMemoryConfig.MAX_DFS_STREAM_BUFFER_SIZE.defaultValue())
-          
.withSpillableMapBasePath(HoodieMemoryConfig.SPILLABLE_MAP_BASE_PATH.defaultValue())
+          
.withSpillableMapBasePath(HoodieMemoryConfig.getDefaultSpillableMapBasePath())
           
.withDiskMapType(HoodieCommonConfig.SPILLABLE_DISK_MAP_TYPE.defaultValue())
           
.withBitCaskDiskMapCompressionEnabled(HoodieCommonConfig.DISK_MAP_BITCASK_COMPRESSION_ENABLED.defaultValue())
           
.withOptimizedLogBlocksScan(Boolean.parseBoolean(HoodieCompactionConfig.ENABLE_OPTIMIZED_LOG_BLOCKS_SCAN.defaultValue()))
diff --git 
a/hudi-spark-datasource/hudi-spark/src/main/scala/org/apache/spark/sql/hudi/command/procedures/ShowHoodieLogFileRecordsProcedure.scala
 
b/hudi-spark-datasource/hudi-spark/src/main/scala/org/apache/spark/sql/hudi/command/procedures/ShowHoodieLogFileRecordsProcedure.scala
index 9c3e2e469b0..ebb325f1936 100644
--- 
a/hudi-spark-datasource/hudi-spark/src/main/scala/org/apache/spark/sql/hudi/command/procedures/ShowHoodieLogFileRecordsProcedure.scala
+++ 
b/hudi-spark-datasource/hudi-spark/src/main/scala/org/apache/spark/sql/hudi/command/procedures/ShowHoodieLogFileRecordsProcedure.scala
@@ -73,7 +73,7 @@ class ShowHoodieLogFileRecordsProcedure extends BaseProcedure 
with ProcedureBuil
         
.withReverseReader(java.lang.Boolean.parseBoolean(HoodieCompactionConfig.COMPACTION_REVERSE_LOG_READ_ENABLE.defaultValue))
         
.withBufferSize(HoodieMemoryConfig.MAX_DFS_STREAM_BUFFER_SIZE.defaultValue)
         
.withMaxMemorySizeInBytes(HoodieMemoryConfig.DEFAULT_MAX_MEMORY_FOR_SPILLABLE_MAP_IN_BYTES)
-        
.withSpillableMapBasePath(HoodieMemoryConfig.SPILLABLE_MAP_BASE_PATH.defaultValue)
+        
.withSpillableMapBasePath(HoodieMemoryConfig.getDefaultSpillableMapBasePath)
         
.withDiskMapType(HoodieCommonConfig.SPILLABLE_DISK_MAP_TYPE.defaultValue)
         
.withBitCaskDiskMapCompressionEnabled(HoodieCommonConfig.DISK_MAP_BITCASK_COMPRESSION_ENABLED.defaultValue)
         
.withRecordMerger(HoodieRecordUtils.loadRecordMerger(classOf[HoodieAvroRecordMerger].getName))

Reply via email to