Fix flaky tests with ConcurrentModificationException

This commit is contained in:
Nataliya.Valtman
2023-08-23 09:14:48 +02:00
committed by Space Team
parent 6e732f2f4d
commit dce1c1c70a
2 changed files with 12 additions and 2 deletions
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.statistics
import org.gradle.api.Project
import org.gradle.api.invocation.Gradle
import org.gradle.api.logging.Logging
import org.gradle.api.provider.Property
import org.gradle.api.provider.Provider
import org.gradle.api.services.BuildService
@@ -16,6 +17,7 @@ import org.gradle.tooling.events.OperationCompletionListener
import org.gradle.tooling.events.task.TaskFailureResult
import org.gradle.tooling.events.task.TaskFinishEvent
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.logging.kotlinDebug
import org.jetbrains.kotlin.gradle.plugin.BuildEventsListenerRegistryHolder
import org.jetbrains.kotlin.gradle.plugin.StatisticsBuildFlowManager
import org.jetbrains.kotlin.gradle.plugin.internal.isProjectIsolationEnabled
@@ -30,6 +32,11 @@ import java.io.Serializable
internal abstract class BuildFlowService : BuildService<BuildFlowService.Parameters>, AutoCloseable, OperationCompletionListener {
private var buildFailed: Boolean = false
private val log = Logging.getLogger(this.javaClass)
init {
log.kotlinDebug("Initialize ${this.javaClass.simpleName}")
}
interface Parameters : BuildServiceParameters {
val configurationMetrics: Property<MetricContainer>
@@ -91,6 +98,7 @@ internal abstract class BuildFlowService : BuildService<BuildFlowService.Paramet
}
override fun onFinish(event: FinishEvent?) {
parameters.fusStatisticsAvailable.get() //force to calculate configuration metrics before build finish
if ((event is TaskFinishEvent) && (event.result is TaskFailureResult)) {
buildFailed = true
}
@@ -103,6 +111,7 @@ internal abstract class BuildFlowService : BuildService<BuildFlowService.Paramet
KotlinBuildStatsService.applyIfInitialised {
it.close()
}
log.kotlinDebug("Close ${this.javaClass.simpleName}")
}
internal fun recordBuildFinished(action: String?, buildFailed: Boolean) {
@@ -105,7 +105,8 @@ class KotlinBuildStatHandler {
gradle.allprojects { project ->
collectAppliedPluginsStatistics(project, configurationTimeMetrics)
for (configuration in project.configurations) {
val configurations = project.configurations.asMap.values
for (configuration in configurations) {
try {
val configurationName = configuration.name
val dependencies = configuration.dependencies
@@ -144,7 +145,7 @@ class KotlinBuildStatHandler {
// log?
}
}
val taskNames = project.tasks.names
val taskNames = project.tasks.names.toList()
configurationTimeMetrics.put(NumericalMetrics.NUMBER_OF_SUBPROJECTS, 1)
configurationTimeMetrics.put(