gaborgsomogyi commented on code in PR #19372:
URL: https://github.com/apache/flink/pull/19372#discussion_r848157811


##########
flink-runtime/src/main/java/org/apache/flink/runtime/security/token/KerberosDelegationTokenManager.java:
##########
@@ -110,13 +126,84 @@ public void obtainDelegationTokens(Credentials 
credentials) {
      * task managers.
      */
     @Override
-    public void start() {
-        LOG.info("Starting renewal task");
+    public void start() throws Exception {
+        checkState(renewalExecutor == null, "Manager is already started");
+
+        if (!isRenewalPossible()) {
+            LOG.info("Renewal is NOT possible, skipping to start renewal 
task");
+            return;
+        }
+
+        ThreadFactory threadFactory =
+                new ThreadFactoryBuilder()
+                        .setDaemon(true)
+                        .setNameFormat("Credential Renewal Thread")
+                        .build();
+        renewalExecutor = new ScheduledThreadPoolExecutor(1, threadFactory);

Review Comment:
   After I've had a deep look I've found the following obstacles which blocks 
us to use the mentioned executors:
   * If you mean `ResourceManager.getMainThreadExecutor` to use in the first 
bullet point then that's a `MainThreadExecutor` instance which doesn't support 
`scheduleAtFixedRate`, please see 
[here](https://github.com/apache/flink/blob/4034d3cd6d13e88e2e5ca101510bf333e94a53fa/flink-rpc/flink-rpc-core/src/main/java/org/apache/flink/runtime/rpc/RpcEndpoint.java#L537).
 We can implement that from scratch but touching core threading can be super 
dangerous, though I'm not against it to add such functionality.
   * If we would rely on `ResourceManager.getMainThreadExecutor` then we must 
modify the interface (`start` function) and we need to put implementation 
details into the interface (the 2 executors) which would frustrate me a bit. I 
think if we want to do dependency injection then the proper place would be the 
constructor which is not touching the interface. Here if we decide to modify 
the interface I can accept that but I would think the implementation would be 
less clean.
   * If we would add the new `scheduleAtFixedRate` functionality then 
`ResourceManager` usage is covered but in 
[MiniCluster](https://github.com/apache/flink/blob/f089a99ce73ad15531a4d1b72899d8367fab662a/flink-runtime/src/main/java/org/apache/flink/runtime/minicluster/MiniCluster.java#L431)
 we must provide something too but there no such executor exists (at least I've 
not found anything) so we need to come up w/ a new executor anyway.
   
   All in all I've left the original code there for now until we make an 
agreement.
   Would like to hear your voice on this.
   



-- 
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]

Reply via email to