XComp commented on code in PR #23880:
URL: https://github.com/apache/flink/pull/23880#discussion_r1422663705
##########
flink-runtime/src/main/java/org/apache/flink/runtime/jobmanager/JobGraphWriter.java:
##########
@@ -37,6 +38,18 @@ public interface JobGraphWriter extends
LocallyCleanableResource, GloballyCleana
*/
void putJobGraph(JobGraph jobGraph) throws Exception;
+ /**
+ * Adds the {@link JobGraph} instance and have write operations performed
asynchronously in
+ * ioExecutor of Dispatcher
+ *
+ * @param jobGraph
+ * @param ioExecutor
+ * @return
+ * @throws Exception
+ */
+ CompletableFuture<Void> putJobGraphAsync(JobGraph jobGraph,
Optional<Executor> ioExecutor)
Review Comment:
A few things on the interface change:
1. `Optional<Executor>` is not the usual way we implement async and sync
behavior with a single method. You can rely on the `DirectExecutor` to achieve
the same. There is no need to deal with `Optional`.
2. For cases where you want to have the async and the sync version of a
method being available, the code is usually easier to read if you put the
business logic in the sync method and implement the async method in the
following way:
```java
public void runRandomMethod(Object obj) {
// do something
}
public CompletableFuture<Void> runRandomMethodAsync(Object obj, Executor
executor) {
return FutureUtils.runAsync(() -> runRandomMethod(obj), executor);
}
```
3. I'm wondering whether we should make all `put*` methods in the
`JobGraphWriter` interface asynchronous rather than maintaining a synchonous
`putJobGraph` method along the `putJobGraphAsync` method which is then only
called by `putJobResourceRequirements`. `putJobResourceRequirements` could
block the `Dispatcher` for the very same reason why `putJobGraph` would block.
WDYT?
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]