This is an automated email from the ASF dual-hosted git repository. voonhous pushed a commit to branch release-1.2.1 in repository https://gitbox.apache.org/repos/asf/hudi.git
commit 8568c472312a9355eacad652516ab14df6cad8f4 Author: fhan <[email protected]> AuthorDate: Mon Jun 1 10:51:31 2026 +0800 fix(flink): set canonical base path in Hive sync config (#18884) Co-authored-by: fhan <[email protected]> (cherry picked from commit da189952aacabc867ce45701ab2812fd23bd22be) --- .../org/apache/hudi/sink/utils/HiveSyncContext.java | 2 ++ .../org/apache/hudi/sink/utils/TestHiveSyncContext.java | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/sink/utils/HiveSyncContext.java b/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/sink/utils/HiveSyncContext.java index 05b8878c0157..349084e128d9 100644 --- a/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/sink/utils/HiveSyncContext.java +++ b/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/sink/utils/HiveSyncContext.java @@ -36,6 +36,7 @@ import org.apache.hadoop.hive.conf.HiveConf; import java.util.Properties; +import static org.apache.hudi.common.config.HoodieCommonConfig.BASE_PATH; import static org.apache.hudi.hive.HiveSyncConfigHolder.HIVE_AUTO_CREATE_DATABASE; import static org.apache.hudi.hive.HiveSyncConfigHolder.HIVE_IGNORE_EXCEPTIONS; import static org.apache.hudi.hive.HiveSyncConfigHolder.HIVE_PASS; @@ -101,6 +102,7 @@ public class HiveSyncContext { @VisibleForTesting public static Properties buildSyncConfig(Configuration conf) { TypedProperties props = StreamerUtil.flinkConf2TypedProperties(conf); + props.setPropertyIfNonNull(BASE_PATH.key(), conf.get(FlinkOptions.PATH)); props.setPropertyIfNonNull(META_SYNC_BASE_PATH.key(), conf.get(FlinkOptions.PATH)); props.setPropertyIfNonNull(META_SYNC_BASE_FILE_FORMAT.key(), conf.get(FlinkOptions.HIVE_SYNC_FILE_FORMAT)); props.setPropertyIfNonNull(META_SYNC_DATABASE_NAME.key(), conf.get(FlinkOptions.HIVE_SYNC_DB)); diff --git a/hudi-flink-datasource/hudi-flink/src/test/java/org/apache/hudi/sink/utils/TestHiveSyncContext.java b/hudi-flink-datasource/hudi-flink/src/test/java/org/apache/hudi/sink/utils/TestHiveSyncContext.java index f246662b5efe..e15135d871c4 100644 --- a/hudi-flink-datasource/hudi-flink/src/test/java/org/apache/hudi/sink/utils/TestHiveSyncContext.java +++ b/hudi-flink-datasource/hudi-flink/src/test/java/org/apache/hudi/sink/utils/TestHiveSyncContext.java @@ -28,6 +28,8 @@ import org.junit.jupiter.api.Test; import java.util.Properties; +import static org.apache.hudi.common.config.HoodieCommonConfig.BASE_PATH; +import static org.apache.hudi.sync.common.HoodieSyncConfig.META_SYNC_BASE_PATH; import static org.apache.hudi.sync.common.HoodieSyncConfig.META_SYNC_PARTITION_FIELDS; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -58,6 +60,21 @@ public class TestHiveSyncContext { assertEquals(partitionPathField, props2.getProperty(META_SYNC_PARTITION_FIELDS.key())); } + /** + * Test table path syncs to both canonical and meta sync base path configs. + */ + @Test + void testSyncedBasePath() { + Configuration configuration = new Configuration(); + String basePath = "/tmp/hudi_table"; + configuration.set(FlinkOptions.PATH, basePath); + + Properties props = HiveSyncContext.buildSyncConfig(configuration); + + assertEquals(basePath, props.getProperty(BASE_PATH.key())); + assertEquals(basePath, props.getProperty(META_SYNC_BASE_PATH.key())); + } + /** * Test an option that has no shortcut key. */
