Hi, Thanks for your comments in doc, I have add Approach 3 which you mentioned! @Luke
For now, we should do a decision for Approach 3 and Approach 1. Detail can be found in doc [1] Welcome anyone's feedback :) Regards, Jincheng [1] https://docs.google.com/document/d/1sCgy9VQPf9zVXKRquK8P6N4x7aB62GEO8ozkujRSHZg/edit?usp=sharing jincheng sun <sunjincheng...@gmail.com> 于2019年10月25日周五 上午10:40写道: > Hi, > > Functionally capable of `abort`, but it will be called at the end of > operator. So, I prefer `dispose` semantics. i.e., all normal logic has been > executed. > > Best, > Jincheng > > Harsh Vardhan <anan...@google.com> 于2019年10月23日周三 上午12:14写道: > >> Would approach 1 be akin to abort semantics? >> >> On Mon, Oct 21, 2019 at 8:01 PM jincheng sun <sunjincheng...@gmail.com> >> wrote: >> >>> Hi Luke, >>> >>> Thanks a lot for your reply. Since it allows to share one SDK harness >>> between multiple executable stages, the control service termination may >>> occur much later than the completion of an executable stage. This is the >>> main reason I prefer runners to control the teardown of DoFns. >>> >>> Regarding to "SDK harnesses can terminate instances any time they want >>> and start new instances anytime as well.", personally I think it's not >>> conflict with the proposed Approach 1 as the SDK harness could decide what >>> to do when receiving the teardown request. It could do nothing if the DoFns >>> has already been teared down and could also tear down the DoFns if needed. >>> >>> What do you think? >>> >>> Best, >>> Jincheng >>> >>> Luke Cwik <lc...@google.com> 于2019年10月22日周二 上午2:05写道: >>> >>>> Approach 2 is currently the suggested approach[1] for DoFn's to >>>> shutdown. >>>> Note that SDK harnesses can terminate instances any time they want and >>>> start new instances anytime as well. >>>> >>>> Why do you want to expose this logic so that Runners could control it? >>>> >>>> 1: >>>> https://docs.google.com/document/d/1n6s3BOxOPct3uF4UgbbI9O9rpdiKWFH9R6mtVmR7xp0/edit# >>>> >>>> On Mon, Oct 21, 2019 at 4:27 AM jincheng sun <sunjincheng...@gmail.com> >>>> wrote: >>>> >>>>> Hi, >>>>> I found that in `SdkHarness` do not stop the `SdkWorker` when >>>>> finish. We should add the logic for stop the `SdkWorker` in `SdkHarness`. >>>>> More detail can be found [1]. >>>>> >>>>> There are two approaches to solve this issue: >>>>> >>>>> Approach 1: We can add a Fn API for teardown purpose and the runner >>>>> will teardown a specific bundle descriptor via this teardown Fn API during >>>>> disposing. >>>>> Approach 2: The control service termination could be seen as a signal >>>>> and once SDK harness receives this signal, the teardown of the bundle >>>>> descriptor will be performed. >>>>> >>>>> More detail can be found in [2]. >>>>> >>>>> As the Approach 2, SDK harness could be shared between multiple >>>>> executable stages. The control service termination only occurs when all >>>>> the >>>>> executable stages sharing the same SDK harness finished. This means that >>>>> the teardown of DoFns may not be executed immediately after an executable >>>>> stage is finished. >>>>> >>>>> So, I prefer Approach 1. Welcome any feedback :) >>>>> >>>>> Best, >>>>> Jincheng >>>>> >>>>> [1] >>>>> https://github.com/apache/beam/blob/master/sdks/python/apache_beam/runners/worker/sdk_worker.py >>>>> [2] >>>>> https://docs.google.com/document/d/1sCgy9VQPf9zVXKRquK8P6N4x7aB62GEO8ozkujRSHZg/edit?usp=sharing >>>>> >>>> -- >> >> Got feedback? go/harsh-feedback <https://goto.google.com/harsh-feedback> >> >