in intellij-plugin-verifier/verifier-repository/src/main/java/com/jetbrains/pluginverifier/repository/resources/ResourceRepositoryImpl.kt [328:360]
override fun cleanup() {
if (maybeCleanup()) {
return
}
// wait for another running cleanup, run one more from the current thread
var skipped = 0
while (true) {
val stop = cleanupState.lock.withLock {
if (cleanupState.running) {
cleanupState.condition.await()
}
if (!cleanupState.running) {
cleanupState.running = true
skipped = cleanupState.skipped
true
} else {
false
}
}
if (stop) {
break
}
}
try {
doCleanup()
} finally {
cleanupState.lock.withLock {
cleanupState.running = false
cleanupState.skipped -= skipped
cleanupState.condition.signalAll()
}
}
}