Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -77,26 +77,27 @@ object SparkKubernetesApp extends Logging {
}

val RefreshServiceAccountTokenThread = new Thread() {
// Token expires after 1 hour by default; refresh every 5 minutes.
private val tokenRefreshIntervalMs = 300000L

override def run(): Unit = {
while (true) {
var currentContext = new Context()
var currentContextName = new String
val config = kubernetesClient.getConfiguration
if (config.getCurrentContext != null) {
currentContext = config.getCurrentContext.getContext
currentContextName = config.getCurrentContext.getName
while (!Thread.currentThread().isInterrupted) {
try {
val config = kubernetesClient.getConfiguration
val contextName = Option(config.getCurrentContext).map(_.getName).getOrElse("")
val newestConfig = Config.autoConfigure(contextName)
config.setOauthToken(newestConfig.getOauthToken)
info("Refreshed Kubernetes service account token.")
Thread.sleep(tokenRefreshIntervalMs)
} catch {
case e: InterruptedException =>
Thread.currentThread().interrupt()
warn("RefreshServiceAccountTokenThread was interrupted, exiting.", e)
return
case NonFatal(e) =>
warn(s"Failed to refresh Kubernetes service account token, will retry.", e)
Comment thread
nileshrathi345 marked this conversation as resolved.
Thread.sleep(tokenRefreshIntervalMs)
}

var newAccessToken = new String
val newestConfig = Config.autoConfigure(currentContextName)
newAccessToken = newestConfig.getOauthToken
info("Refreshed Kubernetes service account token.")

config.setOauthToken(newAccessToken)
kubernetesClient = new DefaultKubernetesClient(config)

// Token will expire 1 hour default, community recommend to update every 5 minutes
Thread.sleep(300000)
}
}
}
Expand Down