gaborgsomogyi commented on code in PR #19372: URL: https://github.com/apache/flink/pull/19372#discussion_r849591137
########## flink-runtime/src/main/java/org/apache/flink/runtime/security/token/KerberosDelegationTokenManager.java: ########## @@ -110,13 +139,62 @@ public void obtainDelegationTokens(Credentials credentials) { * task managers. */ @Override - public void start() { - LOG.info("Starting renewal task"); + public void start() throws Exception { + checkNotNull(scheduledExecutor, "Scheduled executor must not be null"); + checkNotNull(executorService, "Executor service must not be null"); + checkState(tgtRenewalFuture == null, "Manager is already started"); + + if (!kerberosRenewalPossibleProvider.isRenewalPossible()) { + LOG.info("Renewal is NOT possible, skipping to start renewal task"); + return; + } + + startTGTRenewal(); + } + + private void startTGTRenewal() throws IOException { + LOG.debug("Starting credential renewal task"); + + UserGroupInformation currentUser = UserGroupInformation.getCurrentUser(); + if (currentUser.isFromKeytab()) { + // In Hadoop 2.x, renewal of the keytab-based login seems to be automatic, but in Hadoop + // 3.x, it is configurable (see hadoop.kerberos.keytab.login.autorenewal.enabled, added + // in HADOOP-9567). This task will make sure that the user stays logged in regardless of + // that configuration's value. Note that checkTGTAndReloginFromKeytab() is a no-op if + // the TGT does not need to be renewed yet. + long tgtRenewalPeriod = configuration.get(KERBEROS_RELOGIN_PERIOD).toMillis(); + tgtRenewalFuture = + scheduledExecutor.scheduleAtFixedRate( + () -> + executorService.execute( + () -> { + try { + LOG.debug("Renewing TGT"); + currentUser.checkTGTAndReloginFromKeytab(); Review Comment: I've started to have a look... -- 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: issues-unsubscr...@flink.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org