majian1998 opened a new pull request, #10419:
URL: https://github.com/apache/hudi/pull/10419

   In the current version, HoodieFileIndex is a member variable of 
HoodieBaseRelation. PR #7871 has made Hudi's acquisition of Relation behave 
more like Spark's. However, in Spark, the relation is cached as follows:
   ```
   catalog.getCachedPlan(qualifiedTableName, () => {
     val dataSource = DataSource(
       sparkSession,
       userSpecifiedSchema = if (table.schema.isEmpty) None else 
Some(table.schema),
       partitionColumns = table.partitionColumnNames,
       bucketSpec = table.bucketSpec,
       className = table.provider.get,
       options = dsOptions,
       catalogTable = Some(table)
     )
     LogicalRelation(dataSource.resolveRelation(checkFilesExist = false), table)
   })
   
   ```
   
   This results in the continuous use of the same HoodieFileIndex instance.
   
   However, HoodieFileIndex contains cached items like cachedAllPartitionPaths 
and cachedAllInputFileSlices, which only reset upon creating a new 
HoodieFileIndex. A sparkSession will only execute refreshTable when actions 
like 'insert' are performed. If HoodieFileIndex is never refreshed, then a 
SparkSession that only executes queries will always see the version that was 
cached during the initial query. This is not the expected behavior. In 
practice, Delta Lake seems to attempt updating the snapshot with each listFiles 
operation. After PR #7871, Hudi would recreate the relation with each query, 
obtaining the latest snapshot. Therefore, I believe there should be an 
assessment at the start of listFiles to determine whether the cache (snapshot) 
needs to be updated.
   
   ### Change Logs
   
   Determine Whether to Update Cache Based on Timeline Changes Before Listing 
Files
   
   ### Impact
   
   None
   
   ### Risk level (write none, low medium or high below)
   
   medium
   
   ### Documentation Update
   
   None
   
   ### Contributor's checklist
   
   - [ ] Read through [contributor's 
guide](https://hudi.apache.org/contribute/how-to-contribute)
   - [ ] Change Logs and Impact were stated clearly
   - [ ] Adequate tests were added if applicable
   - [ ] CI passed
   


-- 
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: commits-unsubscr...@hudi.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to