I am using flink 1.10.0. My perJob can not be cancelled. From the log I find that webMonitorEndpoint.closeAsync() is completed but deregisterApplication is not called. The related code is as follows:
public CompletableFuture<Void> deregisterApplicationAndClose( final ApplicationStatus applicationStatus, final @Nullable String diagnostics) { if (isRunning.compareAndSet(true, false)) { final CompletableFuture<Void> closeWebMonitorAndDeregisterAppFuture = FutureUtils.composeAfterwards(webMonitorEndpoint.closeAsync(), () -> deregisterApplication(applicationStatus, diagnostics, resourceManager.getJobId())); return FutureUtils.composeAfterwards(closeWebMonitorAndDeregisterAppFuture, this::closeAsyncInternal); } else { return terminationFuture; } } For webMonitorEndpoint.closeAsync(), the code is as follows: public CompletableFuture<Void> closeAsync() { synchronized (lock) { log.info("State is {}. Shutting down rest endpoint.", state); if (state == State.RUNNING) { final CompletableFuture<Void> shutDownFuture = FutureUtils.composeAfterwards( closeHandlersAsync(), this::shutDownInternal); shutDownFuture.whenComplete( (Void ignored, Throwable throwable) -> { log.info("Shut down complete."); if (throwable != null) { terminationFuture.completeExceptionally(throwable); } else { terminationFuture.complete(null); } }); state = State.SHUTDOWN; } else if (state == State.CREATED) { terminationFuture.complete(null); state = State.SHUTDOWN; } return terminationFuture; } } I am sure that it is completed with the log I added as follows: [image: image.png] For deregisterApplication, I do not see any related log like "Shut down cluster because application is in {}, diagnostics {}.". Can anyone give me some suggestions? Thank you.