From bb23602cb3f272bb2587e7ead26eff68693ea751 Mon Sep 17 00:00:00 2001 From: "Alexander.Likhachev" Date: Fri, 6 Oct 2023 19:15:28 +0200 Subject: [PATCH] [Gradle] Do not hold a reference to Gradle objects in FUS services Despite the FUS services are intended to be scoped to a build, the legacy compatibility service wasn't properly managed and that caused a significant memory leak together with changes in KT-59826. #KT-62318 In Progress --- .../statistics/KotlinBuildStatsService.kt | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatsService.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatsService.kt index e4b15e70c73..86ee175b75f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatsService.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatsService.kt @@ -282,18 +282,22 @@ internal abstract class AbstractKotlinBuildStatsService( private val logger = Logging.getLogger(AbstractKotlinBuildStatsService::class.java) } - private val localProperties = project.localProperties + private val forcePropertiesValidation: Boolean - private val forcePropertiesValidation = project - .loadProperty(FORCE_VALUES_VALIDATION, localProperties) - .orNull?.toBoolean() ?: false + private val customSessionLoggerRootPath: String? - private val customSessionLoggerRootPath: String? = project - .loadProperty(CUSTOM_LOGGER_ROOT_PATH, localProperties) - .orNull - ?.also { - logger.warn("$CUSTOM_LOGGER_ROOT_PATH property for test purpose only") - } + init { + val localProperties = project.localProperties + forcePropertiesValidation = project + .loadProperty(FORCE_VALUES_VALIDATION, localProperties) + .orNull?.toBoolean() ?: false + customSessionLoggerRootPath = project + .loadProperty(CUSTOM_LOGGER_ROOT_PATH, localProperties) + .orNull + ?.also { + logger.warn("$CUSTOM_LOGGER_ROOT_PATH property for test purpose only") + } + } private val sessionLoggerRootPath = customSessionLoggerRootPath?.let { File(it) } ?: project.gradle.gradleUserHomeDir