Hi, Shammon, An intuitive way is use numeric string to indicate snapshot and non-numeric string to indicate tag. For example:
SELECT * FROM t VERSION AS OF 1 —to snapshot #1 SELECT * FROM t VERSION AS OF ‘last_year’ —to tag `last_year` This is also how iceberg do [1]. However, if we use this way, the tag name cannot be numeric string. I think this is acceptable and I will add this to the document. Best, Yu Zelin [1] https://iceberg.apache.org/docs/latest/spark-queries/#sql > 2023年5月30日 12:17,Shammon FY <[email protected]> 写道: > > Hi zelin, > > Thanks for your update. I have one comment about Time Travel on savepoint. > > Currently we can use statement in spark for specific snapshot 1 > SELECT * FROM t VERSION AS OF 1; > > My point is how can we distinguish between snapshot and savepoint when > users submit a statement as followed: > SELECT * FROM t VERSION AS OF <version value>; > > Best, > Shammon FY > > On Tue, May 30, 2023 at 11:37 AM yu zelin <[email protected]> wrote: > >> Hi, Jingsong, >> >> Thanks for your feedback. >> >> ## TAG ID >> It seems the id is useless currently. I’ll remove it. >> >> ## Time Travel Syntax >> Since tag id is removed, we can just use: >> >> SELECT * FROM t VERSION AS OF ’tag-name’ >> >> to travel to a tag. >> >> ## Tag class >> I agree with you that we can reuse the Snapshot class. We can introduce >> `TagManager` >> only to manage tags. >> >> ## Expiring Snapshot >>> why not record it in ManifestEntry? >> This is because every time Paimon generate a snapshot, it will create new >> ManifestEntries >> for data files. Consider this scenario, if we record it in ManifestEntry, >> assuming we commit >> data file A to snapshot #1, we will get manifest entry Entry#1 as [ADD, >> A, commit at #1]. >> Then we commit -A to snapshot #2, we will get manifest entry Entry#2 as >> [DELETE, A, ?], >> as you can see, we cannot know at which snapshot we commit the file A. So >> we have to >> record this information to data file meta directly. >> >>> We should note that "record it in `DataFileMeta` should be done before >> “tag” >> and document version compatibility. >> >> I will add message for this. >> >> Best, >> Yu Zelin >> >> >>> 2023年5月29日 10:29,Jingsong Li <[email protected]> 写道: >>> >>> Thanks Zelin for the update. >>> >>> ## TAG ID >>> >>> Is this useful? We have tag-name, snapshot-id, and now introducing a >>> tag id? What is used? >>> >>> ## Time Travel >>> >>> SELECT * FROM t VERSION AS OF tag-name.<name> >>> >>> This does not look like sql standard. >>> >>> Why do we introduce this `tag-name` prefix? >>> >>> ## Tag class >>> >>> Why not just use the Snapshot class? It looks like we don't need to >>> introduce Tag class. We can just copy the snapshot file to tag/. >>> >>> ## Expiring Snapshot >>> >>> We should note that "record it in `DataFileMeta`" should be done >>> before "tag". And document version compatibility. >>> And why not record it in ManifestEntry? >>> >>> Best, >>> Jingsong >>> >>> On Fri, May 26, 2023 at 11:15 AM yu zelin <[email protected]> wrote: >>>> >>>> Hi, all, >>>> >>>> FYI, I have updated the PIP [1]. >>>> >>>> Main changes: >>>> - Use new name `tag` >>>> - Enrich Motivation >>>> - New Section `Data Files Handling` to describe how to determine a data >> files can be deleted. >>>> >>>> Best, >>>> Yu Zelin >>>> >>>> [1] https://cwiki.apache.org/confluence/x/NxE0Dw >>>> >>>>> 2023年5月24日 17:18,yu zelin <[email protected]> 写道: >>>>> >>>>> Hi, Guojun, >>>>> >>>>> I’d like to share my thoughts about your questions. >>>>> >>>>> 1. Expiration of savepoint >>>>> In my opinion, savepoints are created in a long interval, so there >> will not exist too many of them. >>>>> If users create a savepoint per day, there are 365 savepoints a year. >> So I didn’t consider expiration >>>>> of it, and I think provide a flink action like `delete-savepoint id = >> 1` is enough now. >>>>> But if it is really important, we can introduce table options to do >> so. I think we can do it like expiring >>>>> snapshots. >>>>> >>>>> 2. > id of compacted snapshot picked by the savepoint >>>>> My initial idea is picking a compacted snapshot or doing compaction >> before creating savepoint. But >>>>> After discuss with Jingsong, I found it’s difficult. So now I suppose >> to directly create savepoint from >>>>> the given snapshot. Maybe we can optimize it later. >>>>> The changes will be updated soon. >>>>>> manifest file list in system-table >>>>> I think manifest file is not very important for users. Users can find >> when a savepoint is created, and >>>>> get the savepoint id, then they can query it from the savepoint by the >> id. I did’t see what scenario >>>>> the users need the manifest file information. What do you think? >>>>> >>>>> Best, >>>>> Yu Zelin >>>>> >>>>>> 2023年5月24日 10:50,Guojun Li <[email protected]> 写道: >>>>>> >>>>>> Thanks zelin for bringing up the discussion. I'm thinking about: >>>>>> 1. How to manage the savepoints if there are no expiration mechanism, >> by >>>>>> the TTL management of storages or external script? >>>>>> 2. I think the id of compacted snapshot picked by the savepoint and >>>>>> manifest file list is also important information for users, could >> these >>>>>> information be stored in the system-table? >>>>>> >>>>>> Best, >>>>>> Guojun >>>>>> >>>>>> On Mon, May 22, 2023 at 9:13 PM Jingsong Li <[email protected]> >> wrote: >>>>>> >>>>>>> FYI >>>>>>> >>>>>>> The PIP lacks a table to show Discussion thread & Vote thread & >> ISSUE... >>>>>>> >>>>>>> Best >>>>>>> Jingsong >>>>>>> >>>>>>> On Mon, May 22, 2023 at 4:48 PM yu zelin <[email protected]> >> wrote: >>>>>>>> >>>>>>>> Hi, all, >>>>>>>> >>>>>>>> Thank all of you for your suggestions and questions. After reading >> your >>>>>>> suggestions, I adopt some of them and I want to share my opinions >> here. >>>>>>>> >>>>>>>> To make my statements more clear, I will still use the word >> `savepoint`. >>>>>>> When we make a consensus, the name may be changed. >>>>>>>> >>>>>>>> 1. The purposes of savepoint >>>>>>>> >>>>>>>> As Shammon mentioned, Flink and database also have the concept of >>>>>>> `savepoint`. So it’s better to clarify the purposes of our savepoint. >>>>>>> Thanks for Nicholas and Jingsong, I think your explanations are very >> clear. >>>>>>> I’d like to give my summary: >>>>>>>> >>>>>>>> (1) Fault recovery (or we can say disaster recovery). Users can ROLL >>>>>>> BACK to a savepoint if needed. If user rollbacks to a savepoint, the >> table >>>>>>> will hold the data in the savepoint and the data committed after the >>>>>>> savepoint will be deleted. In this scenario we need savepoint because >>>>>>> snapshots may have expired, the savepoint can keep longer and save >> user’s >>>>>>> old data. >>>>>>>> >>>>>>>> (2) Record versions of data at a longer interval (typically daily >> level >>>>>>> or weekly level). With savepoint, user can query the old data in >> batch >>>>>>> mode. Comparing to copy records to a new table or merge incremental >> records >>>>>>> with old records (like using merge into in Hive), the savepoint is >> more >>>>>>> lightweight because we don’t copy data files, we just record the >> meta data >>>>>>> of them. >>>>>>>> >>>>>>>> As you can see, savepoint is very similar to snapshot. The >> differences >>>>>>> are: >>>>>>>> >>>>>>>> (1) Savepoint lives longer. In most cases, snapshot’s life time is >>>>>>> about several minutes to hours. We suppose the savepoint can live >> several >>>>>>> days, weeks, or even months. >>>>>>>> >>>>>>>> (2) Savepoint is mainly used for batch reading for historical data. >> In >>>>>>> this PIP, we don’t introduce streaming reading for savepoint. >>>>>>>> >>>>>>>> 2. Candidates of name >>>>>>>> >>>>>>>> I agree with Jingsong that we can use a new name. Since the purpose >> and >>>>>>> mechanism (savepoint is very similar to snapshot) of savepoint is >> similar >>>>>>> to `tag` in iceberg, maybe we can use `tag`. >>>>>>>> >>>>>>>> In my opinion, an alternative is `anchor`. All the snapshots are >> like >>>>>>> the navigation path of the streaming data, and an `anchor` can stop >> it in a >>>>>>> place. >>>>>>>> >>>>>>>> 3. Public table operations and options >>>>>>>> >>>>>>>> We supposed to expose some operations and table options for user to >>>>>>> manage the savepoint. >>>>>>>> >>>>>>>> (1) Operations (Currently for Flink) >>>>>>>> We provide flink actions to manage savepoints: >>>>>>>> create-savepoint: To generate a savepoint from latest snapshot. >>>>>>> Support to create from specified snapshot. >>>>>>>> delete-savepoint: To delete specified savepoint. >>>>>>>> rollback-to: To roll back to a specified savepoint. >>>>>>>> >>>>>>>> (2) Table options >>>>>>>> We suppose to provide options for creating savepoint periodically: >>>>>>>> savepoint.create-time: When to create the savepoint. Example: 00:00 >>>>>>>> savepoint.create-interval: Interval between the creation of two >>>>>>> savepoints. Examples: 2 d. >>>>>>>> savepoint.time-retained: The maximum time of savepoints to retain. >>>>>>>> >>>>>>>> (3) Procedures (future work) >>>>>>>> Spark supports SQL extension. After we support Spark CALL >> statement, we >>>>>>> can provide procedures to create, delete or rollback to savepoint >> for Spark >>>>>>> users. >>>>>>>> >>>>>>>> Support of CALL is on the road map of Flink. In future version, we >> can >>>>>>> also support savepoint-related procedures for Flink users. >>>>>>>> >>>>>>>> 4. Expiration of data files >>>>>>>> >>>>>>>> Currently, when a snapshot is expired, data files that not be used >> by >>>>>>> other snapshots. After we introduce the savepoint, we must make sure >> the >>>>>>> data files saved by savepoint will not be deleted. >>>>>>>> >>>>>>>> Conversely, when a savepoint is deleted, the data files that not be >>>>>>> used by existing snapshots and other savepoints will be deleted. >>>>>>>> >>>>>>>> I have wrote some POC codes to implement it. I will update the >> mechanism >>>>>>> in PIP soon. >>>>>>>> >>>>>>>> Best, >>>>>>>> Yu Zelin >>>>>>>> >>>>>>>>> 2023年5月21日 20:54,Jingsong Li <[email protected]> 写道: >>>>>>>>> >>>>>>>>> Thanks Yun for your information. >>>>>>>>> >>>>>>>>> We need to be careful to avoid confusion between Paimon and Flink >>>>>>>>> concepts about "savepoint" >>>>>>>>> >>>>>>>>> Maybe we don't have to insist on using this "savepoint", for >> example, >>>>>>>>> TAG is also a candidate just like Iceberg [1] >>>>>>>>> >>>>>>>>> [1] https://iceberg.apache.org/docs/latest/branching/ >>>>>>>>> >>>>>>>>> Best, >>>>>>>>> Jingsong >>>>>>>>> >>>>>>>>> On Sun, May 21, 2023 at 8:51 PM Jingsong Li < >> [email protected]> >>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> Thanks Nicholas for your detailed requirements. >>>>>>>>>> >>>>>>>>>> We need to supplement user requirements in FLIP, which is mainly >> aimed >>>>>>>>>> at two purposes: >>>>>>>>>> 1. Fault recovery for data errors (named: restore or rollback-to) >>>>>>>>>> 2. Used to record versions at the day level (such as), targeting >>>>>>> batch queries >>>>>>>>>> >>>>>>>>>> Best, >>>>>>>>>> Jingsong >>>>>>>>>> >>>>>>>>>> On Sat, May 20, 2023 at 2:55 PM Yun Tang <[email protected]> >> wrote: >>>>>>>>>>> >>>>>>>>>>> Hi Guys, >>>>>>>>>>> >>>>>>>>>>> Since we use Paimon with Flink in most cases, I think we need to >>>>>>> identify the same word "savepoint" in different systems. >>>>>>>>>>> >>>>>>>>>>> For Flink, savepoint means: >>>>>>>>>>> >>>>>>>>>>> 1. Triggered by users, not periodically triggered by the system >>>>>>> itself. However, this FLIP wants to support it created periodically. >>>>>>>>>>> 2. Even the so-called incremental native savepoint [1], it will >>>>>>> not depend on the previous checkpoints or savepoints, it will still >> copy >>>>>>> files on DFS to the self-contained savepoint folder. However, from >> the >>>>>>> description of this FLIP about the deletion of expired snapshot >> files, >>>>>>> paimion savepoint will refer to the previously existing files >> directly. >>>>>>>>>>> >>>>>>>>>>> I don't think we need to make the semantics of Paimon totally the >>>>>>> same as Flink's. However, we need to introduce a table to tell the >>>>>>> difference compared with Flink and discuss about the difference. >>>>>>>>>>> >>>>>>>>>>> [1] >>>>>>> >> https://cwiki.apache.org/confluence/display/FLINK/FLIP-203%3A+Incremental+savepoints#FLIP203:Incrementalsavepoints-Semantic >>>>>>>>>>> >>>>>>>>>>> Best >>>>>>>>>>> Yun Tang >>>>>>>>>>> ________________________________ >>>>>>>>>>> From: Nicholas Jiang <[email protected]> >>>>>>>>>>> Sent: Friday, May 19, 2023 17:40 >>>>>>>>>>> To: [email protected] <[email protected]> >>>>>>>>>>> Subject: Re: [DISCUSS] PIP-4 Support savepoint >>>>>>>>>>> >>>>>>>>>>> Hi Guys, >>>>>>>>>>> >>>>>>>>>>> Thanks Zelin for driving the savepoint proposal. I propose some >>>>>>> opinions for savepont: >>>>>>>>>>> >>>>>>>>>>> -- About "introduce savepoint for Paimon to persist full data in >> a >>>>>>> time point" >>>>>>>>>>> >>>>>>>>>>> The motivation of savepoint proposal is more like snapshot TTL >>>>>>> management. Actually, disaster recovery is very much mission >> critical for >>>>>>> any software. Especially when it comes to data systems, the impact >> could be >>>>>>> very serious leading to delay in business decisions or even wrong >> business >>>>>>> decisions at times. Savepoint is proposed to assist users in >> recovering >>>>>>> data from a previous state: "savepoint" and "restore". >>>>>>>>>>> >>>>>>>>>>> "savepoint" saves the Paimon table as of the commit time, >> therefore >>>>>>> if there is a savepoint, the data generated in the corresponding >> commit >>>>>>> could not be clean. Meanwhile, savepoint could let user restore the >> table >>>>>>> to this savepoint at a later point in time if need be. On similar >> lines, >>>>>>> savepoint cannot be triggered on a commit that is already cleaned up. >>>>>>> Savepoint is synonymous to taking a backup, just that we don't make >> a new >>>>>>> copy of the table, but just save the state of the table elegantly so >> that >>>>>>> we can restore it later when in need. >>>>>>>>>>> >>>>>>>>>>> "restore" lets you restore your table to one of the savepoint >>>>>>> commit. Meanwhile, it cannot be undone (or reversed) and so care >> should be >>>>>>> taken before doing a restore. At this time, Paimon would delete all >> data >>>>>>> files and commit files (timeline files) greater than the savepoint >> commit >>>>>>> to which the table is being restored. >>>>>>>>>>> >>>>>>>>>>> BTW, it's better to introduce snapshot view based on savepoint, >>>>>>> which could improve query performance of historical data for Paimon >> table. >>>>>>>>>>> >>>>>>>>>>> -- About Public API of savepont >>>>>>>>>>> >>>>>>>>>>> Current introduced savepoint interfaces in Public API are not >> enough >>>>>>> for users, for example, deleteSavepoint, restoreSavepoint etc. >>>>>>>>>>> >>>>>>>>>>> -- About "Paimon's savepoint need to be combined with Flink's >>>>>>> savepoint": >>>>>>>>>>> >>>>>>>>>>> If paimon supports savepoint mechanism and provides savepoint >>>>>>> interfaces, the integration with Flink's savepoint is not blocked >> for this >>>>>>> proposal. >>>>>>>>>>> >>>>>>>>>>> In summary, savepoint is not only used to improve the query >>>>>>> performance of historical data, but also used for disaster recovery >>>>>>> processing. >>>>>>>>>>> >>>>>>>>>>> On 2023/05/17 09:53:11 Jingsong Li wrote: >>>>>>>>>>>> What Shammon mentioned is interesting. I agree with what he said >>>>>>> about >>>>>>>>>>>> the differences in savepoints between databases and stream >>>>>>> computing. >>>>>>>>>>>> >>>>>>>>>>>> About "Paimon's savepoint need to be combined with Flink's >>>>>>> savepoint": >>>>>>>>>>>> >>>>>>>>>>>> I think it is possible, but we may need to deal with this in >> another >>>>>>>>>>>> mechanism, because the snapshots after savepoint may expire. We >> need >>>>>>>>>>>> to compare data between two savepoints to generate incremental >> data >>>>>>>>>>>> for streaming read. >>>>>>>>>>>> >>>>>>>>>>>> But this may not need to block FLIP, it looks like the current >>>>>>> design >>>>>>>>>>>> does not break the future combination? >>>>>>>>>>>> >>>>>>>>>>>> Best, >>>>>>>>>>>> Jingsong >>>>>>>>>>>> >>>>>>>>>>>> On Wed, May 17, 2023 at 5:33 PM Shammon FY <[email protected]> >>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> Hi Caizhi, >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks for your comments. As you mentioned, I think we may >> need to >>>>>>> discuss >>>>>>>>>>>>> the role of savepoint in Paimon. >>>>>>>>>>>>> >>>>>>>>>>>>> If I understand correctly, the main feature of savepoint in the >>>>>>> current PIP >>>>>>>>>>>>> is that the savepoint will not be expired, and users can >> perform a >>>>>>> query on >>>>>>>>>>>>> the savepoint according to time-travel. Besides that, there is >>>>>>> savepoint in >>>>>>>>>>>>> the database and Flink. >>>>>>>>>>>>> >>>>>>>>>>>>> 1. Savepoint in database. The database can roll back table >> data to >>>>>>> the >>>>>>>>>>>>> specified 'version' based on savepoint. So the key point of >>>>>>> savepoint in >>>>>>>>>>>>> the database is to rollback data. >>>>>>>>>>>>> >>>>>>>>>>>>> 2. Savepoint in Flink. Users can trigger a savepoint with a >>>>>>> specific >>>>>>>>>>>>> 'path', and save all data of state to the savepoint for job. >> Then >>>>>>> users can >>>>>>>>>>>>> create a new job based on the savepoint to continue consuming >>>>>>> incremental >>>>>>>>>>>>> data. I think the core capabilities are: backup for a job, and >>>>>>> resume a job >>>>>>>>>>>>> based on the savepoint. >>>>>>>>>>>>> >>>>>>>>>>>>> In addition to the above, Paimon may also face data write >>>>>>> corruption and >>>>>>>>>>>>> need to recover data based on the specified savepoint. So we >> may >>>>>>> need to >>>>>>>>>>>>> consider what abilities should Paimon savepoint need besides >> the >>>>>>> ones >>>>>>>>>>>>> mentioned in the current PIP? >>>>>>>>>>>>> >>>>>>>>>>>>> Additionally, as mentioned above, Flink also has >>>>>>>>>>>>> savepoint mechanism. During the process of streaming data from >>>>>>> Flink to >>>>>>>>>>>>> Paimon, does Paimon's savepoint need to be combined with >> Flink's >>>>>>> savepoint? >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Best, >>>>>>>>>>>>> Shammon FY >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Wed, May 17, 2023 at 4:02 PM Caizhi Weng < >> [email protected]> >>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hi developers! >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks Zelin for bringing up the discussion. The proposal >> seems >>>>>>> good to me >>>>>>>>>>>>>> overall. However I'd also like to bring up a few options. >>>>>>>>>>>>>> >>>>>>>>>>>>>> 1. As Jingsong mentioned, Savepoint class should not become a >>>>>>> public API, >>>>>>>>>>>>>> at least for now. What we need to discuss for the public API >> is >>>>>>> how the >>>>>>>>>>>>>> users can create or delete savepoints. For example, what the >>>>>>> table option >>>>>>>>>>>>>> looks like, what commands and options are provided for the >> Flink >>>>>>> action, >>>>>>>>>>>>>> etc. >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2. Currently most Flink actions are related to streaming >>>>>>> processing, so >>>>>>>>>>>>>> only Flink can support them. However, savepoint creation and >>>>>>> deletion seems >>>>>>>>>>>>>> like a feature for batch processing. So aside from Flink >> actions, >>>>>>> shall we >>>>>>>>>>>>>> also provide something like Spark actions for savepoints? >>>>>>>>>>>>>> >>>>>>>>>>>>>> I would also like to comment on Shammon's views. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Should we introduce an option for savepoint path which may be >>>>>>> different >>>>>>>>>>>>>>> from 'warehouse'? Then users can backup the data of >> savepoint. >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> I don't see this is necessary. To backup a table the user just >>>>>>> need to copy >>>>>>>>>>>>>> all files from the table directory. Savepoint in Paimon, as >> far >>>>>>> as I >>>>>>>>>>>>>> understand, is mainly for users to review historical data, not >>>>>>> for backing >>>>>>>>>>>>>> up tables. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Will the savepoint copy data files from snapshot or only save >>>>>>> meta files? >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> It would be a heavy burden if a savepoint copies all its >> files. >>>>>>> As I >>>>>>>>>>>>>> mentioned above, savepoint is not for backing up tables. >>>>>>>>>>>>>> >>>>>>>>>>>>>> How can users create a new table and restore data from the >>>>>>> specified >>>>>>>>>>>>>>> savepoint? >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> This reminds me of savepoints in Flink. Still, savepoint is >> not >>>>>>> for backing >>>>>>>>>>>>>> up tables so I guess we don't need to support "restoring data" >>>>>>> from a >>>>>>>>>>>>>> savepoint. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Shammon FY <[email protected]> 于2023年5月17日周三 10:32写道: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks Zelin for initiating this discussion. I have some >>>>>>> comments: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 1. Should we introduce an option for savepoint path which >> may be >>>>>>>>>>>>>> different >>>>>>>>>>>>>>> from 'warehouse'? Then users can backup the data of >> savepoint. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 2. Will the savepoint copy data files from snapshot or only >> save >>>>>>> meta >>>>>>>>>>>>>>> files? The description in the PIP "After we introduce >> savepoint, >>>>>>> we >>>>>>>>>>>>>> should >>>>>>>>>>>>>>> also check if the data files are used by savepoints." looks >> like >>>>>>> we only >>>>>>>>>>>>>>> save meta files for savepoint. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 3. How can users create a new table and restore data from the >>>>>>> specified >>>>>>>>>>>>>>> savepoint? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>> Shammon FY >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Wed, May 17, 2023 at 10:19 AM Jingsong Li < >>>>>>> [email protected]> >>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks Zelin for driving. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Some comments: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 1. I think it's possible to advance `Proposed Changes` to >> the >>>>>>> top, >>>>>>>>>>>>>>>> Public API has no meaning if I don't know how to do it. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 2. Public API, Savepoint and SavepointManager are not Public >>>>>>> API, only >>>>>>>>>>>>>>>> Flink action or configuration option should be public API. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 3.Maybe we can have a separate chapter to describe >>>>>>>>>>>>>>>> `savepoint.create-interval`, maybe 'Periodically >> savepoint'? It >>>>>>> is not >>>>>>>>>>>>>>>> just an interval, because the true user case is savepoint >> after >>>>>>> 0:00. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 4.About 'Interaction with Snapshot', to be continued ... >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>> Jingsong >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Tue, May 16, 2023 at 7:07 PM yu zelin < >> [email protected] >>>>>>>> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi, Paimon Devs, >>>>>>>>>>>>>>>>> I’d like to start a discussion about PIP-4[1]. In this >>>>>>> PIP, I >>>>>>>>>>>>>> want >>>>>>>>>>>>>>>> to talk about why we need savepoint, and some thoughts about >>>>>>> managing >>>>>>>>>>>>>> and >>>>>>>>>>>>>>>> using savepoint. Look forward to your question and >> suggestions. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>> Yu Zelin >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> [1] https://cwiki.apache.org/confluence/x/NxE0Dw >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>> >>>>>>> >>>>> >>>> >> >>
