Fix flaky tests with ConcurrentModificationException
This commit is contained in:
committed by
Space Team
parent
6e732f2f4d
commit
dce1c1c70a
+9
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.statistics
|
|||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.invocation.Gradle
|
import org.gradle.api.invocation.Gradle
|
||||||
|
import org.gradle.api.logging.Logging
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
import org.gradle.api.services.BuildService
|
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.TaskFailureResult
|
||||||
import org.gradle.tooling.events.task.TaskFinishEvent
|
import org.gradle.tooling.events.task.TaskFinishEvent
|
||||||
import org.gradle.util.GradleVersion
|
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.BuildEventsListenerRegistryHolder
|
||||||
import org.jetbrains.kotlin.gradle.plugin.StatisticsBuildFlowManager
|
import org.jetbrains.kotlin.gradle.plugin.StatisticsBuildFlowManager
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.isProjectIsolationEnabled
|
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 {
|
internal abstract class BuildFlowService : BuildService<BuildFlowService.Parameters>, AutoCloseable, OperationCompletionListener {
|
||||||
private var buildFailed: Boolean = false
|
private var buildFailed: Boolean = false
|
||||||
|
private val log = Logging.getLogger(this.javaClass)
|
||||||
|
|
||||||
|
init {
|
||||||
|
log.kotlinDebug("Initialize ${this.javaClass.simpleName}")
|
||||||
|
}
|
||||||
|
|
||||||
interface Parameters : BuildServiceParameters {
|
interface Parameters : BuildServiceParameters {
|
||||||
val configurationMetrics: Property<MetricContainer>
|
val configurationMetrics: Property<MetricContainer>
|
||||||
@@ -91,6 +98,7 @@ internal abstract class BuildFlowService : BuildService<BuildFlowService.Paramet
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onFinish(event: FinishEvent?) {
|
override fun onFinish(event: FinishEvent?) {
|
||||||
|
parameters.fusStatisticsAvailable.get() //force to calculate configuration metrics before build finish
|
||||||
if ((event is TaskFinishEvent) && (event.result is TaskFailureResult)) {
|
if ((event is TaskFinishEvent) && (event.result is TaskFailureResult)) {
|
||||||
buildFailed = true
|
buildFailed = true
|
||||||
}
|
}
|
||||||
@@ -103,6 +111,7 @@ internal abstract class BuildFlowService : BuildService<BuildFlowService.Paramet
|
|||||||
KotlinBuildStatsService.applyIfInitialised {
|
KotlinBuildStatsService.applyIfInitialised {
|
||||||
it.close()
|
it.close()
|
||||||
}
|
}
|
||||||
|
log.kotlinDebug("Close ${this.javaClass.simpleName}")
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun recordBuildFinished(action: String?, buildFailed: Boolean) {
|
internal fun recordBuildFinished(action: String?, buildFailed: Boolean) {
|
||||||
|
|||||||
+3
-2
@@ -105,7 +105,8 @@ class KotlinBuildStatHandler {
|
|||||||
gradle.allprojects { project ->
|
gradle.allprojects { project ->
|
||||||
collectAppliedPluginsStatistics(project, configurationTimeMetrics)
|
collectAppliedPluginsStatistics(project, configurationTimeMetrics)
|
||||||
|
|
||||||
for (configuration in project.configurations) {
|
val configurations = project.configurations.asMap.values
|
||||||
|
for (configuration in configurations) {
|
||||||
try {
|
try {
|
||||||
val configurationName = configuration.name
|
val configurationName = configuration.name
|
||||||
val dependencies = configuration.dependencies
|
val dependencies = configuration.dependencies
|
||||||
@@ -144,7 +145,7 @@ class KotlinBuildStatHandler {
|
|||||||
// log?
|
// log?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val taskNames = project.tasks.names
|
val taskNames = project.tasks.names.toList()
|
||||||
|
|
||||||
configurationTimeMetrics.put(NumericalMetrics.NUMBER_OF_SUBPROJECTS, 1)
|
configurationTimeMetrics.put(NumericalMetrics.NUMBER_OF_SUBPROJECTS, 1)
|
||||||
configurationTimeMetrics.put(
|
configurationTimeMetrics.put(
|
||||||
|
|||||||
Reference in New Issue
Block a user