Hi, Dev Thank you all for joining this thread and giving your comments and suggestions, they have helped improve this proposal and I look forward to further feedback. If there are no further comments, I'd like to close the discussion and start the voting one day later.
Best, Ron Ron Liu <ron9....@gmail.com> 于2024年5月7日周二 20:51写道: > Hi, dev > > Following the recent PoC[1], and drawing on the excellent code design > within Flink, I have made the following optimizations to the Public > Interfaces section of FLIP: > > 1. I have renamed WorkflowOperation to RefreshWorkflow. This change better > conveys its purpose. RefreshWorkflow is used to provide the necessary > information required for creating, modifying, and deleting workflows. Using > WorkflowOperation could mislead people into thinking it is a command > operation, whereas in fact, it does not represent an operation but merely > provides the essential context information for performing operations on > workflows. The specific operations are completed within WorkflowScheduler. > Additionally, I felt that using WorkflowOperation could potentially > conflict with the Operation[2] interface in the table. > 2. I have refined the signatures of the modifyRefreshWorkflow and > deleteRefreshWorkflow interface methods in WorkflowScheduler. The parameter > T refreshHandler is now provided by ModifyRefreshWorkflow and > deleteRefreshWorkflow, which makes the overall interface design more > symmetrical and clean. > > [1] https://github.com/lsyldliu/flink/tree/FLIP-448-PoC > [2] > https://github.com/apache/flink/blob/29736b8c01924b7da03d4bcbfd9c812a8e5a08b4/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/operations/Operation.java > > Best, > Ron > > Ron Liu <ron9....@gmail.com> 于2024年5月7日周二 14:30写道: > >> > 4. It appears that in the section on `public interfaces`, within >> `WorkflowOperation`, `CreatePeriodicWorkflowOperation` should be changed to >> >> `CreateWorkflowOperation`, right? >> >> After discussing with Xuyang offline, we need to support periodic >> workflow and one-time workflow, they need different information, for >> example, periodic workflow needs cron expression, one-time workflow needs >> refresh partition, downstream cascade materialized table, etc. Therefore, >> CreateWorkflowOperation correspondingly will have two different >> implementation classes, which will be cleaner for both the implementer and >> the caller. >> >> Best, >> Ron >> >> Ron Liu <ron9....@gmail.com> 于2024年5月6日周一 20:48写道: >> >>> Hi, Xuyang >>> >>> Thanks for joining this discussion >>> >>> > 1. In the sequence diagram, it appears that there is a missing step >>> for obtaining the refresh handler from the catalog during the suspend >>> operation. >>> >>> Good catch >>> >>> > 2. The term "cascade refresh" does not seem to be mentioned in >>> FLIP-435. The workflow it creates is marked as a "one-time workflow". This >>> is different >>> >>> from a "periodic workflow," and it appears to be a one-off execution. Is >>> this actually referring to the Refresh command in FLIP-435? >>> >>> The cascade refresh is a future work, we don't propose the corresponding >>> syntax in FLIP-435. However, intuitively, it would be an extension of the >>> Refresh command in FLIP-435. >>> >>> > 3. The workflow-scheduler.type has no default value; should it be set >>> to CRON by default? >>> >>> Firstly, CRON is not a workflow scheduler. Secondly, I believe that >>> configuring the Scheduler should be an action that users are aware of, and >>> default values should not be set. >>> >>> > 4. It appears that in the section on `public interfaces`, within >>> `WorkflowOperation`, `CreatePeriodicWorkflowOperation` should be changed to >>> >>> `CreateWorkflowOperation`, right? >>> >>> Sorry, I don't get your point. Can you give more description? >>> >>> Best, >>> Ron >>> >>> Xuyang <xyzhong...@163.com> 于2024年5月6日周一 20:26写道: >>> >>>> Hi, Ron. >>>> >>>> Thanks for driving this. After reading the entire flip, I have the >>>> following questions: >>>> >>>> >>>> >>>> >>>> 1. In the sequence diagram, it appears that there is a missing step for >>>> obtaining the refresh handler from the catalog during the suspend >>>> operation. >>>> >>>> >>>> >>>> >>>> 2. The term "cascade refresh" does not seem to be mentioned in >>>> FLIP-435. The workflow it creates is marked as a "one-time workflow". This >>>> is different >>>> >>>> from a "periodic workflow," and it appears to be a one-off execution. >>>> Is this actually referring to the Refresh command in FLIP-435? >>>> >>>> >>>> >>>> >>>> 3. The workflow-scheduler.type has no default value; should it be set >>>> to CRON by default? >>>> >>>> >>>> >>>> >>>> 4. It appears that in the section on `public interfaces`, within >>>> `WorkflowOperation`, `CreatePeriodicWorkflowOperation` should be changed to >>>> >>>> `CreateWorkflowOperation`, right? >>>> >>>> >>>> >>>> >>>> -- >>>> >>>> Best! >>>> Xuyang >>>> >>>> >>>> >>>> >>>> >>>> At 2024-04-22 14:41:39, "Ron Liu" <ron9....@gmail.com> wrote: >>>> >Hi, Dev >>>> > >>>> >I would like to start a discussion about FLIP-448: Introduce Pluggable >>>> >Workflow Scheduler Interface for Materialized Table. >>>> > >>>> >In FLIP-435[1], we proposed Materialized Table, which has two types of >>>> data >>>> >refresh modes: Full Refresh & Continuous Refresh Mode. In Full Refresh >>>> >mode, the Materialized Table relies on a workflow scheduler to perform >>>> >periodic refresh operation to achieve the desired data freshness. >>>> > >>>> >There are numerous open-source workflow schedulers available, with >>>> popular >>>> >ones including Airflow and DolphinScheduler. To enable Materialized >>>> Table >>>> >to work with different workflow schedulers, we propose a pluggable >>>> workflow >>>> >scheduler interface for Materialized Table in this FLIP. >>>> > >>>> >For more details, see FLIP-448 [2]. Looking forward to your feedback. >>>> > >>>> >[1] https://lists.apache.org/thread/c1gnn3bvbfs8v1trlf975t327s4rsffs >>>> >[2] >>>> > >>>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-448%3A+Introduce+Pluggable+Workflow+Scheduler+Interface+for+Materialized+Table >>>> > >>>> >Best, >>>> >Ron >>>> >>>