hudi
hudi copied to clipboard
[HUDI-8076] Timeline - Support 0.x and 1.x implementation for timeline and related classes
Change Logs
Major changes: As part of HUDI-8076 proposal,
- Create Factory Interface for instantiating HoodieInstant and Hoodie Timelines.
- Use TimelineLayout to determine what version to use for Timeline and instant specific logic.
- HoodieInstant has following new interfaces: (a) InstantFactory : Construct HoodieInstant (b)InstantFileNameFactory : Construct filenames from HoodieInstant (c) InstantFileNameParser : Encapsulates logic to extract timestamp,.. (d) InstantComparator : Encapsulates logic to compare instants (e:g completion time based) - Each of these interfaces has implementation for 0.15 and 1.x release versions.
- Make Timeline classes such as HoodieActiveTImeline, HoodieArchiveTImeline and DefaultTImeline as interfaces.
- Port 0.x timeline and HoodieInstant logic as one implementations of the above factory and timeline interfaces.
- Refactor existing timeline classes as 1.x implementation for the new timeline interfaces.
Still In progress:
- Getting Tests passing
- Handle 0.x commit and other metadata
- Create new interface for ArchiveTimelineWriter and migrate 0.x code.
Impact
Refactoring to allow supporting writing and reading in different version compatibility.
Risk level (write none, low medium or high below)
low
Documentation Update
N/A
Contributor's checklist
- [ ] Read through contributor's guide
- [ ] Change Logs and Impact were stated clearly
- [ ] Adequate tests were added if applicable
- [ ] CI passed