TisonKun commented on issue #10408: [FLINK-14992][client] Add job listener to execution environments URL: https://github.com/apache/flink/pull/10408#issuecomment-561685163 > I don't think we should enforce user to write code like this, this is not a user-friendly api. > Personally, I don't think we should care whether user accidentally close JobClient in JobListener, if they do that, then it is their mistake. The good practise is who create resource, then who clean the resource. Here it is flink create JobClient, then it should be flink to clean it instead of asking user to clean this resource. Take the following method as one example > > ``` > private void method_1(InputStream in) { > ... > } > ``` > > Should `method_1` close InputStream ? I don't think so. > > Another solution I can think of is that we can pass `JobContext` instead of `JobClient`. And user can create `JobClient` via `JobContext`. e.g. > > ``` > @Override > public void onJobSubmitted(JobContext jobContext, Throwable throwable) { > try (JobClient jobClient = jobContext.createJobClient()) { > ... > } > } > ``` > > Because in this approach, user have to create JobClient explicitly, then it is their responsibility to clean this resource. For this design we can add a `JobContext` as ```java jobListeners.foreach(jobListener -> jobListener.onJobSubmitted(new JobContextImpl(jobClient))); // where public class JobContextImpl { private final JobClient jobClient = <passed>; JobClient createJobClient() { return jobClient.duplicate(); } JobID getJobID() { return jobClient.getJobID(); } } ``` what do you think? @zjffdu @aljoscha
---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services
