Davis-Zhang-Onehouse opened a new pull request, #19726:
URL: https://github.com/apache/hudi/pull/19726

   ### Describe the issue this Pull Request addresses
   
   closes #19725
   
   HUDI-7494 taught the meta-sync clients to persist and read 
`last_commit_completion_time_sync` so incremental sync can register a commit 
that completes after the instant-time watermark has already moved past it. The 
mechanism has no test coverage on the sync clients: nothing fails if the 
completion watermark stops being written, is computed with the wrong ordering, 
or is never consulted on read. Separately, the Glue test fixture writes its 
seed commit into `.hoodie/` while the version-8 timeline reads 
`.hoodie/timeline/`, so every Glue test has been running against an empty 
active timeline.
   
   ### Summary and Changelog
   
   Test-only coverage for the completion-time watermark, plus one error-message 
fix.
   
   - `TestAWSGlueSyncClient`: four new tests. The watermark test seeds a second 
commit whose instant time sorts below the fixture's but whose completion time 
is later, and asserts the two watermarks come from the two different instants; 
mutating the client to persist the completion time of the instant-time-latest 
instant fails it (`expected: <20250101000001000> but was: 
<20250101000000000>`). Also: no-op when the timeline has no completed commit, 
and both read-back paths of `getLastCommitCompletionTimeSynced`.
   - `TestHiveSyncToolLongRunningWriteWatermark` (new): end-to-end on 
`HiveSyncTool`, parameterized over the client. A long-running INSERT_OVERWRITE 
completes after two sync cycles advanced the watermark past its instant time: 
the stock client registers the partition through the hollow-instant lookup in 
`TimelineUtils.getCommitsTimelineAfter`; an instant-time-only client silently 
and permanently drops it.
   - `TestHiveSyncTool`: `updateLastCommitTimeSynced` on a 
created-but-never-written table must no-op.
   - `HiveTestUtil`: `startInsertOverwritePartition` (requested + inflight 
markers and data files, no completed file) and `addEmptyCommit` helpers.
   - `GlueTestUtil`: the fixture commit is now written into the timeline folder 
with an explicit completion time in the file name, so the fixture timeline is 
actually visible; `createCommitFile` / `deleteCommitFile` helpers.
   - `AWSGlueCatalogSyncClient.getLastCommitCompletionTimeSynced`: the failure 
message now names the database-qualified table like its sibling methods.
   
   Test code adapted from the 0.x backport of HUDI-7494.
   
   ### Impact
   
   None on production behavior; one exception message now includes the database 
name.
   
   ### Risk Level
   
   none
   
   ### Documentation Update
   
   none
   
   ### Contributor's checklist
   
   - [x] Read through [contributor's 
guide](https://hudi.apache.org/contribute/how-to-contribute)
   - [x] Enough context is provided in the sections above
   - [x] Adequate tests were added if applicable
   


-- 
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