diff --git a/platform/collaboration-tools/src/com/intellij/collaboration/auth/AccountUrlAuthenticationFailuresHolder.kt b/platform/collaboration-tools/src/com/intellij/collaboration/auth/AccountUrlAuthenticationFailuresHolder.kt index b1bbc783b0b1..030d15ae0ef8 100644 --- a/platform/collaboration-tools/src/com/intellij/collaboration/auth/AccountUrlAuthenticationFailuresHolder.kt +++ b/platform/collaboration-tools/src/com/intellij/collaboration/auth/AccountUrlAuthenticationFailuresHolder.kt @@ -2,8 +2,9 @@ package com.intellij.collaboration.auth import com.intellij.concurrency.ConcurrentCollectionFactory -import com.intellij.util.awaitCancellationAndInvoke +import kotlinx.coroutines.CoroutineName import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Job import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch import java.util.concurrent.ConcurrentHashMap @@ -15,14 +16,14 @@ class AccountUrlAuthenticationFailuresHolder( private val storeMap = ConcurrentHashMap>() init { - cs.awaitCancellationAndInvoke { + cs.coroutineContext[Job]?.invokeOnCompletion { storeMap.clear() } } fun markFailed(account: A, url: String) { storeMap.computeIfAbsent(account) { - cs.launch { + cs.launch(CoroutineName("AccountUrlAuthenticationFailuresHolder token change listener")) { accountManager().getCredentialsFlow(account).first() storeMap.remove(account) }