yihua commented on code in PR #19427:
URL: https://github.com/apache/hudi/pull/19427#discussion_r3688069645


##########
hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/HiveSyncTool.java:
##########
@@ -211,7 +211,16 @@ protected void doSync() {
             syncHoodieTable(snapshotTableName, true, false);
             // sync origin table for MOR
             if (config.getBoolean(META_SYNC_SNAPSHOT_WITH_TABLE_NAME)) {
-              syncHoodieTable(tableName, true, false);
+              if 
(config.getBoolean(HIVE_SKIP_RO_SUFFIX_FOR_READ_OPTIMIZED_TABLE)) {
+                // skip_ro_suffix explicitly claims the bare table name for 
the RO view;
+                // an implicit sync_snapshot_with_table_name default must not 
repurpose it as RT.
+                log.warn("{}=true claims the base table name '{}' for the 
read-optimized view; "

Review Comment:
   Done, reworded to "bare table name".



##########
hudi-sync/hudi-hive-sync/src/main/java/org/apache/hudi/hive/HiveSyncTool.java:
##########
@@ -211,7 +211,16 @@ protected void doSync() {
             syncHoodieTable(snapshotTableName, true, false);
             // sync origin table for MOR
             if (config.getBoolean(META_SYNC_SNAPSHOT_WITH_TABLE_NAME)) {
-              syncHoodieTable(tableName, true, false);
+              if 
(config.getBoolean(HIVE_SKIP_RO_SUFFIX_FOR_READ_OPTIMIZED_TABLE)) {
+                // skip_ro_suffix explicitly claims the bare table name for 
the RO view;
+                // an implicit sync_snapshot_with_table_name default must not 
repurpose it as RT.

Review Comment:
   Done, removed.



##########
hudi-sync/hudi-hive-sync/src/test/java/org/apache/hudi/hive/TestHiveSyncTool.java:
##########
@@ -1557,6 +1559,43 @@ public void testSyncMergeOnReadWithStrategy(String 
syncMode, HoodieSyncTableStra
     }
   }
 
+  @Test
+  void testSkipRoSuffixTakesPrecedenceOverSnapshotWithTableName() throws 
Exception {
+    // skip_ro_suffix explicitly claims the bare table name for the RO view; 
the now-default-true
+    // sync_snapshot_with_table_name must not be allowed to flip it to RT.
+    hiveSyncProps.setProperty(HIVE_SYNC_TABLE_STRATEGY.key(), 
HoodieSyncTableStrategy.ALL.name());
+    
hiveSyncProps.setProperty(HIVE_SKIP_RO_SUFFIX_FOR_READ_OPTIMIZED_TABLE.key(), 
"true");
+    hiveSyncProps.setProperty(META_SYNC_SNAPSHOT_WITH_TABLE_NAME.key(), 
"true");
+    hiveSyncProps.setProperty(HIVE_SYNC_AS_DATA_SOURCE_TABLE.key(), "true");
+
+    String instantTime = "100";
+    String deltaCommitTime = "101";
+    HiveTestUtil.createMORTable(instantTime, deltaCommitTime, 5, true, true);
+
+    reInitHiveSyncClient();
+    reSyncHiveTable();

Review Comment:
   Verified: reverted the production fix and ran the test — it fails as 
expected on the first commit alone (`isAlreadySynced` short-circuits the 
redundant sync before it can flip anything), and only fails with the right 
symptom once a second commit + resync round is added, matching what you found 
locally. Added the second round (`HiveTestUtil.addMORPartitions` + another 
`reSyncHiveTable()`), confirmed it fails without the fix (bare table flips to 
`HoodieParquetRealtimeInputFormat`) and passes with it.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to