Split Gradle and JPS metrics

#KT-58026 In progress
This commit is contained in:
Nataliya.Valtman
2023-07-19 12:57:06 +02:00
committed by Space Team
parent 524df83265
commit ed2dd4b2ae
55 changed files with 918 additions and 546 deletions
@@ -5,23 +5,22 @@
package org.jetbrains.kotlin.build.report
import org.jetbrains.kotlin.build.report.metrics.BuildMetricsReporter
import org.jetbrains.kotlin.build.report.metrics.DoNothingBuildMetricsReporter
import org.jetbrains.kotlin.build.report.metrics.RemoteBuildMetricsReporter
import org.jetbrains.kotlin.build.report.metrics.*
open class BuildReporter(
open class BuildReporter<B : BuildTime, P : BuildPerformanceMetric>(
protected open val icReporter: ICReporter,
protected open val buildMetricsReporter: BuildMetricsReporter
) : ICReporter by icReporter, BuildMetricsReporter by buildMetricsReporter
protected open val buildMetricsReporter: BuildMetricsReporter<B, P>,
) : ICReporter by icReporter, BuildMetricsReporter<B, P> by buildMetricsReporter
class RemoteBuildReporter(
class RemoteBuildReporter<B : BuildTime, P : BuildPerformanceMetric>(
override val icReporter: RemoteICReporter,
override val buildMetricsReporter: RemoteBuildMetricsReporter
) : BuildReporter(icReporter, buildMetricsReporter), RemoteReporter {
override val buildMetricsReporter: RemoteBuildMetricsReporter<B, P>,
) : BuildReporter<B, P>(icReporter, buildMetricsReporter), RemoteReporter {
override fun flush() {
icReporter.flush()
buildMetricsReporter.flush()
}
}
object DoNothingBuildReporter : BuildReporter(DoNothingICReporter, DoNothingBuildMetricsReporter)
object DoNothingBuildReporter :
BuildReporter<GradleBuildTime, GradleBuildPerformanceMetric>(DoNothingICReporter, DoNothingBuildMetricsReporter)
@@ -7,5 +7,4 @@ package org.jetbrains.kotlin.build.report.metrics
import org.jetbrains.kotlin.build.report.RemoteReporter
interface RemoteBuildMetricsReporter : BuildMetricsReporter,
RemoteReporter
interface RemoteBuildMetricsReporter<B : BuildTime, P : BuildPerformanceMetric> : BuildMetricsReporter<B, P>, RemoteReporter
@@ -7,7 +7,8 @@ package org.jetbrains.kotlin.incremental
import org.jetbrains.kotlin.build.report.BuildReporter
import org.jetbrains.kotlin.build.report.debug
import org.jetbrains.kotlin.build.report.metrics.BuildTime
import org.jetbrains.kotlin.build.report.metrics.GradleBuildPerformanceMetric
import org.jetbrains.kotlin.build.report.metrics.GradleBuildTime
import org.jetbrains.kotlin.build.report.metrics.measure
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollector
import org.jetbrains.kotlin.incremental.storage.InMemoryStorageWrapper
@@ -163,7 +164,7 @@ class NonRecoverableCompilationTransaction : CompilationTransaction, BaseCompila
* In the case of an unsuccessful compilation [stashDir] is also removed, but the backed-up files restored to their origin location.
*/
class RecoverableCompilationTransaction(
private val reporter: BuildReporter,
private val reporter: BuildReporter<GradleBuildTime, GradleBuildPerformanceMetric>,
private val stashDir: Path,
) : CompilationTransaction, BaseCompilationTransaction() {
private val fileRelocationRegistry = hashMapOf<Path, Path?>()
@@ -175,7 +176,7 @@ class RecoverableCompilationTransaction(
*/
override fun registerAddedOrChangedFile(outputFile: Path) {
if (isFileRelocationIsAlreadyRegisteredFor(outputFile)) return
reporter.measure(BuildTime.PRECISE_BACKUP_OUTPUT) {
reporter.measure(GradleBuildTime.PRECISE_BACKUP_OUTPUT) {
if (Files.exists(outputFile)) {
stashFile(outputFile)
} else {
@@ -197,7 +198,7 @@ class RecoverableCompilationTransaction(
Files.delete(outputFile)
return
}
reporter.measure(BuildTime.PRECISE_BACKUP_OUTPUT) {
reporter.measure(GradleBuildTime.PRECISE_BACKUP_OUTPUT) {
stashFile(outputFile)
}
}
@@ -219,7 +220,7 @@ class RecoverableCompilationTransaction(
*/
private fun revertChanges() {
reporter.debug { "Reverting changes" }
reporter.measure(BuildTime.RESTORE_OUTPUT_FROM_BACKUP) {
reporter.measure(GradleBuildTime.RESTORE_OUTPUT_FROM_BACKUP) {
for ((originPath, relocatedPath) in fileRelocationRegistry) {
if (relocatedPath == null) {
if (Files.exists(originPath)) {
@@ -237,7 +238,7 @@ class RecoverableCompilationTransaction(
*/
private fun cleanupStash() {
reporter.debug { "Cleaning up stash" }
reporter.measure(BuildTime.CLEAN_BACKUP_STASH) {
reporter.measure(GradleBuildTime.CLEAN_BACKUP_STASH) {
Files.walk(stashDir).use {
it.sorted(Comparator.reverseOrder())
.forEach(Files::delete)