From c3f89fe57e8d4c1ca0c8b50887366a5a31b700c1 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Fri, 24 Nov 2023 09:27:50 +0100 Subject: [PATCH] IJPL-373 rename useWithScope2 to useWithScope (part 1 - rename old method for non-suspend context) GitOrigin-RevId: d8e0f1abeb6425df4c34be2c15de02381cbd3f29 --- .../CreateJavaFileCommand.kt | 4 +-- .../impl/TextEditorBackgroundHighlighter.kt | 4 +-- .../jetbrains/intellij/build/BuildContext.kt | 6 +++-- .../jetbrains/intellij/build/GradleRunner.kt | 6 ++--- .../intellij/build/impl/BuildHelper.kt | 6 ++--- .../intellij/build/impl/BuildTasksImpl.kt | 5 ++-- .../intellij/build/impl/BuiltInHelpPlugin.kt | 6 ++--- .../build/impl/CompilationTasksImpl.kt | 12 ++++----- .../build/impl/DistributionJARsBuilder.kt | 11 ++++---- .../intellij/build/impl/JarCacheManager.kt | 16 +++++++++--- .../intellij/build/impl/JarPackager.kt | 18 ++++++------- .../build/impl/JpsCompilationRunner.kt | 4 +-- .../build/impl/LinuxDistributionBuilder.kt | 6 ++--- .../impl/OsSpecificDistributionBuilder.kt | 4 +-- .../intellij/build/impl/TestingTasksImpl.kt | 10 +++---- .../impl/compilation/CompilationPartsUtil.kt | 14 +++++----- .../PortableCompilationCacheDownloader.kt | 6 ++--- .../PortableCompilationCacheUploader.kt | 10 +++---- .../build/impl/compilation/download.kt | 6 ++--- .../build/impl/logging/BuildMessagesImpl.kt | 4 +-- .../org/jetbrains/intellij/build/impl/sign.kt | 5 ++-- .../diagnostic/telemetry/helpers/trace.kt | 26 ++++++------------- .../actionSystem/impl/ActionUpdater.kt | 4 +-- .../com/intellij/vcs/log/data/VcsLogData.java | 6 +++-- .../vcs/log/history/FileHistoryFilterer.kt | 6 ++--- .../vcs/log/visible/VcsLogFiltererImpl.kt | 4 +-- .../commands/CreateKotlinFileCommand.kt | 4 +-- .../commands/StartInlineRenameCommand.kt | 4 +-- 28 files changed, 110 insertions(+), 107 deletions(-) diff --git a/java/performancePlugin/src/com/intellij/java/performancePlugin/CreateJavaFileCommand.kt b/java/performancePlugin/src/com/intellij/java/performancePlugin/CreateJavaFileCommand.kt index 5b1d537ccbb2..d14326fb9bc2 100644 --- a/java/performancePlugin/src/com/intellij/java/performancePlugin/CreateJavaFileCommand.kt +++ b/java/performancePlugin/src/com/intellij/java/performancePlugin/CreateJavaFileCommand.kt @@ -6,7 +6,7 @@ import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.project.guessProjectDir import com.intellij.openapi.ui.playback.PlaybackContext import com.intellij.openapi.vfs.findDirectory -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.psi.JavaDirectoryService import com.intellij.psi.impl.file.PsiJavaDirectoryFactory import com.jetbrains.performancePlugin.PerformanceTestSpan @@ -50,7 +50,7 @@ class CreateJavaFileCommand(text: String, line: Int) : PerformanceCommandCorouti VcsTestUtil.provisionVcsAddFileConfirmation(context.project, VcsTestUtil.VcsAddFileConfirmation.DO_NOTHING) ApplicationManager.getApplication().invokeAndWait(Context.current().wrap(Runnable { - PerformanceTestSpan.TRACER.spanBuilder(NAME).useWithScope { + PerformanceTestSpan.TRACER.spanBuilder(NAME).useWithScopeBlocking { JavaDirectoryService.getInstance().createClass(directory, fileName, templateName, true) } })) diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/TextEditorBackgroundHighlighter.kt b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/TextEditorBackgroundHighlighter.kt index 481691c3d466..0981445c804f 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/TextEditorBackgroundHighlighter.kt +++ b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/TextEditorBackgroundHighlighter.kt @@ -10,7 +10,7 @@ import com.intellij.openapi.diagnostic.logger import com.intellij.openapi.editor.Editor import com.intellij.openapi.progress.ProcessCanceledException import com.intellij.openapi.project.Project -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.psi.PsiCompiledFile import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiFile @@ -57,7 +57,7 @@ class TextEditorBackgroundHighlighter(private val project: Project, private val return emptyList() } - HighlightingPassTracer.HIGHLIGHTING_PASS_TRACER.spanBuilder("passes instantiation").useWithScope { span -> + HighlightingPassTracer.HIGHLIGHTING_PASS_TRACER.spanBuilder("passes instantiation").useWithScopeBlocking { span -> val startupActivity = StartUpMeasurer.startActivity("highlighting passes instantiation") var cancelled = false try { diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/BuildContext.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/BuildContext.kt index 5c08f7beff6e..dc616c8a8608 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/BuildContext.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/BuildContext.kt @@ -136,14 +136,16 @@ fun executeStepSync(context: BuildContext, stepMessage: String, stepId: String, Span.current().addEvent("skip step", Attributes.of(AttributeKey.stringKey("name"), stepMessage)) } else { - spanBuilder(stepMessage).use { + spanBuilder(stepMessage).startSpan().use { step.run() } } return true } -suspend inline fun BuildContext.executeStep(spanBuilder: SpanBuilder, stepId: String, crossinline step: suspend CoroutineScope.(Span) -> Unit) { +suspend inline fun BuildContext.executeStep(spanBuilder: SpanBuilder, + stepId: String, + crossinline step: suspend CoroutineScope.(Span) -> Unit) { if (isStepSkipped(stepId)) { spanBuilder.startSpan().addEvent("skip '$stepId' step").end() } diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/GradleRunner.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/GradleRunner.kt index cab585f09ef1..4789049a1983 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/GradleRunner.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/GradleRunner.kt @@ -1,10 +1,10 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. @file:Suppress("ReplacePutWithAssignment") package org.jetbrains.intellij.build import com.intellij.openapi.util.SystemInfoRt -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import io.opentelemetry.api.trace.Span import org.jetbrains.intellij.build.TraceManager.spanBuilder import org.jetbrains.intellij.build.dependencies.BuildDependenciesCommunityRoot @@ -47,7 +47,7 @@ class GradleRunner( tasks = tasks.asList()) private fun runInner(title: String, buildFile: File?, force: Boolean, parallel: Boolean, tasks: List): Boolean { - spanBuilder("gradle $tasks").setAttribute("title", title).useWithScope { span -> + spanBuilder("gradle $tasks").setAttribute("title", title).useWithScopeBlocking { span -> if (runInner(buildFile = buildFile, parallel = parallel, tasks = tasks)) { return true } diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildHelper.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildHelper.kt index d2e1c697a33e..83adf8caaf57 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildHelper.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildHelper.kt @@ -1,8 +1,8 @@ // Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.intellij.build.impl -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope2 +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.util.JavaModuleOptions import com.intellij.util.system.OS import com.intellij.util.xml.dom.readXmlAsModel @@ -28,7 +28,7 @@ import kotlin.io.path.copyTo import kotlin.time.Duration internal fun span(spanBuilder: SpanBuilder, task: Runnable) { - spanBuilder.useWithScope { + spanBuilder.useWithScopeBlocking { task.run() } } @@ -60,7 +60,7 @@ fun copyDirWithFileFilter(fromDir: Path, targetDir: Path, fileFilter: Predicate< fun zip(context: CompilationContext, targetFile: Path, dir: Path) { spanBuilder("pack") .setAttribute("targetFile", context.paths.buildOutputDir.relativize(targetFile).toString()) - .useWithScope { + .useWithScopeBlocking { org.jetbrains.intellij.build.io.zip(targetFile = targetFile, dirs = mapOf(dir to "")) } } diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildTasksImpl.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildTasksImpl.kt index aa2f4835e8f4..c3f557dd7213 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildTasksImpl.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuildTasksImpl.kt @@ -8,6 +8,7 @@ import com.intellij.openapi.util.text.Formats import com.intellij.platform.diagnostic.telemetry.helpers.use import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope2 +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.util.io.Decompressor import com.intellij.util.system.CpuArch import io.opentelemetry.api.common.AttributeKey @@ -350,7 +351,7 @@ private suspend fun buildOsSpecificDistributions(context: BuildContext): List @@ -513,7 +514,7 @@ suspend fun zipSourcesOfModules(modules: List, targetFile: Path, include spanBuilder("pack") .setAttribute("targetFile", context.paths.buildOutputDir.relativize(targetFile).toString()) - .useWithScope { + .useWithScopeBlocking { zipWithCompression(targetFile = targetFile, dirs = zipFileMap) } diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuiltInHelpPlugin.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuiltInHelpPlugin.kt index 880a30d76af5..89db80f844b1 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuiltInHelpPlugin.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/BuiltInHelpPlugin.kt @@ -1,7 +1,7 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.intellij.build.impl -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import io.opentelemetry.api.trace.Span import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock @@ -88,7 +88,7 @@ private fun pluginXml(buildContext: BuildContext, version: String): String { private val helpIndexerMutex = Mutex() private suspend fun buildResourcesForHelpPlugin(resourceRoot: Path, classPath: List, assetJar: Path, context: CompilationContext) { - spanBuilder("index help topics").useWithScope { + spanBuilder("index help topics").useWithScopeBlocking { helpIndexerMutex.withLock { runIdea(context = context, mainClass = "com.jetbrains.builtInHelp.indexer.HelpIndexer", args = listOf(resourceRoot.resolve("search").toString(), diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/CompilationTasksImpl.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/CompilationTasksImpl.kt index 24225c980361..c87c46f062b4 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/CompilationTasksImpl.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/CompilationTasksImpl.kt @@ -1,7 +1,7 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.intellij.build.impl -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import io.opentelemetry.api.common.AttributeKey import io.opentelemetry.api.trace.Span import org.jetbrains.intellij.build.CompilationContext @@ -12,7 +12,7 @@ import org.jetbrains.intellij.build.impl.compilation.CompiledClasses class CompilationTasksImpl(private val context: CompilationContext) : CompilationTasks { override fun compileModules(moduleNames: Collection?, includingTestsInModules: List?) { resolveProjectDependencies() - spanBuilder("compile modules").useWithScope { + spanBuilder("compile modules").useWithScopeBlocking { CompiledClasses.reuseOrCompile(context, moduleNames, includingTestsInModules) } } @@ -29,7 +29,7 @@ class CompilationTasksImpl(private val context: CompilationContext) : Compilatio spanBuilder("build project artifacts") .setAttribute(AttributeKey.stringArrayKey("artifactNames"), artifactNames.toList()) - .useWithScope { + .useWithScopeBlocking { jps.buildArtifacts(artifactNames, buildIncludedModules = false) } } @@ -39,7 +39,7 @@ class CompilationTasksImpl(private val context: CompilationContext) : Compilatio Span.current().addEvent("project dependencies are already resolved") } else { - spanBuilder("resolve project dependencies").useWithScope { + spanBuilder("resolve project dependencies").useWithScopeBlocking { JpsCompilationRunner(context).resolveProjectDependencies() } } @@ -50,7 +50,7 @@ class CompilationTasksImpl(private val context: CompilationContext) : Compilatio Span.current().addEvent("runtime module repository is already generated") } else { - spanBuilder("generate runtime module repository").useWithScope { + spanBuilder("generate runtime module repository").useWithScopeBlocking { JpsCompilationRunner(context).generateRuntimeModuleRepository() } } diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.kt index b33c16150dd6..04d562858ad3 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.kt @@ -6,8 +6,8 @@ package org.jetbrains.intellij.build.impl import com.fasterxml.jackson.jr.ob.JSON import com.intellij.openapi.util.io.NioFiles import com.intellij.openapi.util.text.StringUtil -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope2 +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.util.io.Compressor import com.jetbrains.plugin.blockmap.core.BlockMap import com.jetbrains.plugin.blockmap.core.FileHash @@ -337,11 +337,12 @@ suspend fun buildNonBundledPlugins(pluginsToPublish: Set, } private suspend fun validatePlugin(path: Path, context: BuildContext) { - context.executeStep(spanBuilder("plugin validation").setAttribute("path", "$path"), BuildOptions.VALIDATE_PLUGINS_TO_BE_PUBLISHED) { - if (!Files.exists(path)) { - it.addEvent("path doesn't exist, skipped") + context.executeStep(spanBuilder("plugin validation").setAttribute("path", "$path"), BuildOptions.VALIDATE_PLUGINS_TO_BE_PUBLISHED) { span -> + if (Files.notExists(path)) { + span.addEvent("path doesn't exist, skipped") return@executeStep } + val pluginManager = IdePluginManager.createManager() val id = (pluginManager.createPlugin(path, validateDescriptor = false) as? PluginCreationSuccess) @@ -591,7 +592,7 @@ suspend fun layoutPlatformDistribution(moduleOutputPatcher: ModuleOutputPatcher, patchKeyMapWithAltClickReassignedToMultipleCarets(moduleOutputPatcher = moduleOutputPatcher, context = context) } launch { - spanBuilder("write patched app info").useWithScope { + spanBuilder("write patched app info").useWithScopeBlocking { val moduleOutDir = context.getModuleOutputDir(context.findRequiredModule("intellij.platform.core")) val relativePath = "com/intellij/openapi/application/ApplicationNamesInfo.class" val result = injectAppInfo(inFile = moduleOutDir.resolve(relativePath), newFieldValue = context.applicationInfo.appInfoXml) diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarCacheManager.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarCacheManager.kt index cf093a985847..ab3a07dae35f 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarCacheManager.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarCacheManager.kt @@ -14,10 +14,7 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.SerializationException import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json -import org.jetbrains.intellij.build.Source -import org.jetbrains.intellij.build.SourceAndCacheStrategy -import org.jetbrains.intellij.build.ZipSource -import org.jetbrains.intellij.build.createSourceAndCacheStrategyList +import org.jetbrains.intellij.build.* import org.jetbrains.intellij.build.dependencies.CacheDirCleanup import java.math.BigInteger import java.nio.file.FileAlreadyExistsException @@ -47,6 +44,8 @@ internal sealed interface JarCacheManager { nativeFiles: MutableMap>?, span: Span, producer: SourceBuilder): Path + + fun validateHash(source: Source) } internal data object NonCachingJarCacheManager : JarCacheManager { @@ -58,6 +57,9 @@ internal data object NonCachingJarCacheManager : JarCacheManager { producer.produce() return targetFile } + + override fun validateHash(source: Source) { + } } private val json by lazy { @@ -169,6 +171,12 @@ internal class LocalDiskJarCacheManager(private val cacheDir: Path, } return targetFile } + + override fun validateHash(source: Source) { + if (source.hash == 0L && (source !is DirSource || Files.exists(source.dir))) { + Span.current().addEvent("Zero hash for $source") + } + } } private fun checkCache(cacheMetadataFile: Path, diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarPackager.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarPackager.kt index 1b5c264557ed..c9bce9642b8c 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarPackager.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JarPackager.kt @@ -27,7 +27,6 @@ import org.jetbrains.jps.model.module.JpsModuleReference import java.io.File import java.nio.ByteBuffer import java.nio.file.FileSystems -import java.nio.file.Files import java.nio.file.Path import java.nio.file.PathMatcher import java.security.MessageDigest @@ -129,7 +128,7 @@ class JarPackager private constructor(private val outputDir: Path, layout: BaseLayout?, platformLayout: PlatformLayout?, moduleOutputPatcher: ModuleOutputPatcher = ModuleOutputPatcher(), - dryRun: Boolean = false, + dryRun: Boolean, moduleWithSearchableOptions: Set = emptySet(), context: BuildContext): Collection { @@ -190,10 +189,10 @@ class JarPackager private constructor(private val outputDir: Path, val list = mutableListOf() val hasher = Hashing.komihash5_0().hashStream() for (item in packager.jarDescriptors.values) { - computeDistributionFileEntries(item = item, hasher = hasher, list = list, dryRun = dryRun) + computeDistributionFileEntries(item = item, hasher = hasher, list = list, dryRun = dryRun, cacheManager = cacheManager) } for (item in packager.dirDescriptors.values) { - computeDistributionFileEntries(item = item, hasher = hasher, list = list, dryRun = dryRun) + computeDistributionFileEntries(item = item, hasher = hasher, list = list, dryRun = dryRun, cacheManager = cacheManager) } // sort because projectStructureMapping is a concurrent collection @@ -806,18 +805,19 @@ private fun isFromLocalMavenRepo(path: Path) = path.startsWith(MAVEN_REPO) private fun computeDistributionFileEntries(item: AssetDescriptor, hasher: HashStream64, list: MutableList, - dryRun: Boolean) { + dryRun: Boolean, + cacheManager: JarCacheManager) { for ((module, sources) in item.includedModules) { var size = 0 hasher.reset() hasher.putInt(sources.size) for (source in sources) { size += source.size - if (!dryRun && source.hash == 0L && (source !is DirSource || Files.exists(source.dir))) { - Span.current().addEvent("Zero hash for $source") + if (!dryRun) { + cacheManager.validateHash(source) + hasher.putLong(source.hash) + hasher.putInt(source.size) } - hasher.putLong(source.hash) - hasher.putInt(source.size) } val hash = hasher.asLong diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JpsCompilationRunner.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JpsCompilationRunner.kt index af805a5f27c4..6776118afd21 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JpsCompilationRunner.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/JpsCompilationRunner.kt @@ -3,7 +3,7 @@ package org.jetbrains.intellij.build.impl import com.intellij.devkit.runtimeModuleRepository.jps.build.RuntimeModuleRepositoryBuildConstants import com.intellij.platform.diagnostic.telemetry.helpers.use -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import io.opentelemetry.api.common.AttributeKey import io.opentelemetry.api.common.Attributes import io.opentelemetry.api.trace.Span @@ -316,7 +316,7 @@ internal class JpsCompilationRunner(private val context: CompilationContext) { .setAttribute("modules", moduleSet.joinToString(separator = ", ")) .setAttribute("incremental", context.options.incrementalCompilation) .setAttribute("cacheDir", compilationData.dataStorageRoot.toString()) - .useWithScope { + .useWithScopeBlocking { Standalone.runBuild( { context.projectModel }, compilationData.dataStorageRoot.toFile(), mapOf(GlobalOptions.BUILD_DATE_IN_SECONDS to "${context.options.buildDateInSeconds}"), diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/LinuxDistributionBuilder.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/LinuxDistributionBuilder.kt index 26d02a4b1c64..92bb968f56f3 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/LinuxDistributionBuilder.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/LinuxDistributionBuilder.kt @@ -3,8 +3,8 @@ package org.jetbrains.intellij.build.impl import com.intellij.openapi.util.SystemInfoRt import com.intellij.openapi.util.io.NioFiles -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope2 +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import io.opentelemetry.api.trace.Span import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -200,10 +200,10 @@ class LinuxDistributionBuilder(override val context: BuildContext, val snapDir = context.paths.buildOutputDir.resolve("dist.snap") spanBuilder("build Linux .snap package") .setAttribute("snapName", snapName) - .useWithScope { span -> + .useWithScopeBlocking { span -> if (SystemInfoRt.isWindows) { span.addEvent(".snap cannot be built on Windows, skipped") - return@useWithScope + return@useWithScopeBlocking } check(iconPngPath != null) { context.messages.error("'iconPngPath' not set") } check(!customizer.snapDescription.isNullOrBlank()) { context.messages.error("'snapDescription' not set") } diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/OsSpecificDistributionBuilder.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/OsSpecificDistributionBuilder.kt index 8510ee2af59c..18f3efe857cb 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/OsSpecificDistributionBuilder.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/OsSpecificDistributionBuilder.kt @@ -3,7 +3,7 @@ package org.jetbrains.intellij.build.impl import com.intellij.openapi.util.SystemInfoRt import com.intellij.openapi.util.io.FileUtil -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.util.io.PosixFilePermissionsUtil import org.apache.commons.compress.archivers.tar.TarArchiveEntry import org.apache.commons.compress.archivers.tar.TarArchiveInputStream @@ -47,7 +47,7 @@ interface OsSpecificDistributionBuilder { } fun checkExecutablePermissions(distribution: Path, root: String, includeRuntime: Boolean = true, arch: JvmArchitecture) { - TraceManager.spanBuilder("Permissions check for ${distribution.name}").useWithScope { + TraceManager.spanBuilder("Permissions check for ${distribution.name}").useWithScopeBlocking { val patterns = generateExecutableFilesMatchers(includeRuntime, arch) val matchedFiles = when { patterns.isEmpty() -> return diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/TestingTasksImpl.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/TestingTasksImpl.kt index c5ddce965a9a..1e812e253429 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/TestingTasksImpl.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/TestingTasksImpl.kt @@ -10,7 +10,7 @@ import com.intellij.openapi.util.io.FileUtilRt import com.intellij.openapi.util.io.NioFiles import com.intellij.openapi.util.text.StringUtilRt import com.intellij.platform.diagnostic.telemetry.helpers.use -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.util.lang.UrlClassLoader import io.opentelemetry.api.common.AttributeKey import kotlinx.coroutines.Dispatchers @@ -164,7 +164,7 @@ internal class TestingTasksImpl(private val context: CompilationContext, private systemProperties: MutableMap, context: CompilationContext) { for (configuration in runConfigurations) { - spanBuilder("run '${configuration.name}' run configuration").useWithScope { + spanBuilder("run '${configuration.name}' run configuration").useWithScopeBlocking { runTestsFromRunConfiguration(configuration, additionalJvmOptions, systemProperties, context) } } @@ -698,7 +698,7 @@ internal class TestingTasksImpl(private val context: CompilationContext, private if (isRunningInBatchMode) { spanBuilder("run tests in batch mode") .setAttribute(AttributeKey.stringKey("pattern"), options.batchTestIncludes ?: "") - .useWithScope { + .useWithScopeBlocking { runInBatchMode(mainModule, systemProperties, jvmArgs, envVariables, bootstrapClasspath, testClasspath) } } @@ -720,7 +720,7 @@ internal class TestingTasksImpl(private val context: CompilationContext, private val spanNameSuffix = if (options.attemptCount > 1) " (attempt $attempt)" else "" val additionalJvmArgs: List = if (attempt > 1) listOf("-Dintellij.build.test.ignoreFirstAndLastTests=true") else emptyList() - val exitCode5: Int = if (runJUnit5) spanBuilder("run junit 5 tests${spanNameSuffix}").useWithScope { + val exitCode5: Int = if (runJUnit5) spanBuilder("run junit 5 tests${spanNameSuffix}").useWithScopeBlocking { if (options.isDedicatedRuntimePerClassEnabled) { context.messages.info("Creation of a dedicated runtime for each class is enabled") val testClasses = getTestClassesForModule(mainModule = mainModule) @@ -756,7 +756,7 @@ internal class TestingTasksImpl(private val context: CompilationContext, private } else 0 - val exitCode3: Int = if (runJUnit3) spanBuilder("run junit 3 tests${spanNameSuffix}").useWithScope { + val exitCode3: Int = if (runJUnit3) spanBuilder("run junit 3 tests${spanNameSuffix}").useWithScopeBlocking { if (options.isDedicatedRuntimePerClassEnabled) { context.messages.info("Creation of a dedicated runtime for each class is enabled") val testClasses = getTestClassesForModule(mainModule = mainModule) diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/CompilationPartsUtil.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/CompilationPartsUtil.kt index 2f24cf577eb6..9e9b6f452926 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/CompilationPartsUtil.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/CompilationPartsUtil.kt @@ -4,7 +4,7 @@ package org.jetbrains.intellij.build.impl.compilation import com.intellij.platform.diagnostic.telemetry.helpers.use -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.util.containers.ContainerUtil import io.opentelemetry.api.common.AttributeKey import io.opentelemetry.api.common.Attributes @@ -78,7 +78,7 @@ fun packAndUploadToServer(context: CompilationContext, zipDir: Path, config: Com } } else { - spanBuilder("pack classes").useWithScope { + spanBuilder("pack classes").useWithScopeBlocking { packCompilationResult(context, zipDir) } } @@ -146,7 +146,7 @@ fun packCompilationResult(context: CompilationContext, zipDir: Path, addDirEntri } } - spanBuilder("build zip archives").useWithScope { + spanBuilder("build zip archives").useWithScopeBlocking { val traceContext = Context.current() ForkJoinTask.invokeAll(items.map { item -> ForkJoinTask.adapt(Callable { @@ -214,7 +214,7 @@ private fun upload(config: CompilationCacheUploadConfiguration, } spanBuilder("upload archives").setAttribute(AttributeKey.stringArrayKey("items"), - items.map(PackAndUploadItem::name)).useWithScope { + items.map(PackAndUploadItem::name)).useWithScopeBlocking { uploadArchives(reportStatisticValue = messages::reportStatisticValue, config = config, metadataJson = metadataJson, @@ -245,7 +245,7 @@ fun fetchAndUnpackCompiledClasses(reportStatisticValue: (key: String, value: Str var verifyTime = 0L val upToDate = ContainerUtil.newConcurrentSet() - spanBuilder("check previously unpacked directories").useWithScope { span -> + spanBuilder("check previously unpacked directories").useWithScopeBlocking { span -> verifyTime += checkPreviouslyUnpackedDirectories(items = items, span = span, upToDate = upToDate, @@ -255,7 +255,7 @@ fun fetchAndUnpackCompiledClasses(reportStatisticValue: (key: String, value: Str reportStatisticValue("compile-parts:up-to-date:count", upToDate.size.toString()) val toUnpack = LinkedHashSet(items.size) - val toDownload = spanBuilder("check previously downloaded archives").useWithScope { span -> + val toDownload = spanBuilder("check previously downloaded archives").useWithScopeBlocking { span -> val start = System.nanoTime() val result = ForkJoinTask.invokeAll(items.mapNotNull { item -> if (upToDate.contains(item.name)) { @@ -539,7 +539,7 @@ inline fun forkJoinTask(spanBuilder: SpanBuilder, crossinline operation: () .setParent(context) .setAttribute(THREAD_NAME, thread.name) .setAttribute(THREAD_ID, thread.id) - .useWithScope { + .useWithScopeBlocking { operation() } }) diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/PortableCompilationCacheDownloader.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/PortableCompilationCacheDownloader.kt index dbfb858e70e8..dcf79b97b4f6 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/PortableCompilationCacheDownloader.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/PortableCompilationCacheDownloader.kt @@ -1,10 +1,10 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. @file:Suppress("ReplaceGetOrSet") package org.jetbrains.intellij.build.impl.compilation import com.intellij.platform.diagnostic.telemetry.helpers.use -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.util.io.Decompressor import org.jetbrains.intellij.build.CompilationContext import org.jetbrains.intellij.build.TraceManager @@ -47,7 +47,7 @@ internal class PortableCompilationCacheDownloader( } private fun downloadToFile(url: String, file: Path, spanName: String) { - TraceManager.spanBuilder(spanName).setAttribute("url", url).setAttribute("path", "$file").useWithScope { + TraceManager.spanBuilder(spanName).setAttribute("url", url).setAttribute("path", "$file").useWithScopeBlocking { Files.createDirectories(file.parent) retryWithExponentialBackOff { if (url.isS3()) { diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/PortableCompilationCacheUploader.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/PortableCompilationCacheUploader.kt index cc70dc450a76..583e70a03041 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/PortableCompilationCacheUploader.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/PortableCompilationCacheUploader.kt @@ -1,9 +1,9 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.intellij.build.impl.compilation -import com.intellij.platform.diagnostic.telemetry.helpers.use -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope import com.intellij.openapi.util.io.FileUtil +import com.intellij.platform.diagnostic.telemetry.helpers.use +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.util.io.Compressor import io.opentelemetry.api.common.AttributeKey import io.opentelemetry.api.common.Attributes @@ -81,7 +81,7 @@ internal class PortableCompilationCacheUploader( private fun uploadToS3() { if (remoteCache.shouldBeSyncedToS3) { - spanBuilder("aws s3 sync").useWithScope { + spanBuilder("aws s3 sync").useWithScopeBlocking { awsS3Cli("cp", "--no-progress", "--include", "*", "--recursive", "$s3Folder", "s3://intellij-jps-cache", returnStdOut = false) } } @@ -191,7 +191,7 @@ private class Uploader(serverUrl: String, val authHeader: String) { fun upload(path: String, file: Path) { val url = pathToUrl(path) - spanBuilder("upload").setAttribute("url", url).setAttribute("path", path).useWithScope { + spanBuilder("upload").setAttribute("url", url).setAttribute("path", path).useWithScopeBlocking { check(Files.exists(file)) { "The file $file does not exist" } diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/download.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/download.kt index a0da092f8f37..adc09e753f8a 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/download.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/compilation/download.kt @@ -2,7 +2,7 @@ package org.jetbrains.intellij.build.impl.compilation import com.github.luben.zstd.ZstdDirectBufferDecompressingStreamNoFinalizer -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.util.lang.HashMapZipFile import io.opentelemetry.api.common.AttributeKey import io.opentelemetry.api.common.Attributes @@ -34,7 +34,7 @@ internal fun downloadCompilationCache(serverUrl: String, saveHash: Boolean): List { var urlWithPrefix = "$serverUrl/$prefix/" // first let's check for initial redirect (mirror selection) - spanBuilder("mirror selection").useWithScope { span -> + spanBuilder("mirror selection").useWithScopeBlocking { span -> client.newCall(Request.Builder() .url(urlWithPrefix) .head() @@ -87,7 +87,7 @@ internal fun downloadCompilationCache(serverUrl: String, } } - spanBuilder("unpack").setAttribute("name", item.name).useWithScope { + spanBuilder("unpack").setAttribute("name", item.name).useWithScopeBlocking { unpackArchive(item, saveHash) } null diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/logging/BuildMessagesImpl.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/logging/BuildMessagesImpl.kt index bcbe55047acf..1e47e32a1a51 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/logging/BuildMessagesImpl.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/logging/BuildMessagesImpl.kt @@ -1,7 +1,7 @@ // Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.intellij.build.impl.logging -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import kotlinx.coroutines.runBlocking import org.jetbrains.annotations.ApiStatus.Internal import org.jetbrains.intellij.build.* @@ -117,7 +117,7 @@ class BuildMessagesImpl private constructor(private val logger: BuildMessageLogg try { processMessage(LogMessage(LogMessage.Kind.BLOCK_STARTED, blockName)) - spanBuilder(blockName.lowercase(Locale.getDefault())).useWithScope { + spanBuilder(blockName.lowercase(Locale.getDefault())).useWithScopeBlocking { try { task.call() } diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/sign.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/sign.kt index eb047c81f634..94b585f4ee7e 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/sign.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/sign.kt @@ -3,9 +3,8 @@ package org.jetbrains.intellij.build.impl import com.intellij.openapi.util.SystemInfoRt -import com.intellij.platform.diagnostic.telemetry.helpers.use -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope2 +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.jetbrains.signatureverifier.ILogger import com.jetbrains.signatureverifier.InvalidDataException import com.jetbrains.signatureverifier.crypt.SignatureVerificationParams @@ -122,7 +121,7 @@ private fun copyZipReplacing(origin: Path, entries: Map, context: spanBuilder("replacing unsigned entries in zip") .setAttribute("zip", origin.toString()) .setAttribute(AttributeKey.stringArrayKey("unsigned"), entries.keys.toList()) - .useWithScope { + .useWithScopeBlocking { transformZipUsingTempFile(origin) { zipWriter -> val index = PackageIndexBuilder() readZipFile(origin) { name, dataSupplier -> diff --git a/platform/diagnostic/telemetry/src/com/intellij/platform/diagnostic/telemetry/helpers/trace.kt b/platform/diagnostic/telemetry/src/com/intellij/platform/diagnostic/telemetry/helpers/trace.kt index 67c1ef2a315a..ad64d3c9cc02 100644 --- a/platform/diagnostic/telemetry/src/com/intellij/platform/diagnostic/telemetry/helpers/trace.kt +++ b/platform/diagnostic/telemetry/src/com/intellij/platform/diagnostic/telemetry/helpers/trace.kt @@ -17,7 +17,7 @@ import java.util.concurrent.CancellationException import java.util.function.Consumer import kotlin.coroutines.CoroutineContext -inline fun SpanBuilder.useWithScope(operation: (Span) -> T): T { +inline fun SpanBuilder.useWithScopeBlocking(operation: (Span) -> T): T { val span = startSpan() return span.makeCurrent().use { span.use(operation) @@ -42,10 +42,6 @@ suspend inline fun SpanBuilder.useWithScope2(crossinline operation: suspend } } -fun runWithSpanSimple(tracer: IJTracer, spanName: String, operation: Runnable) { - runWithSpan(tracer, spanName) { _ -> operation.run() } -} - fun computeWithSpanAttribute(tracer: IJTracer, spanName: String, attributeName: String, @@ -60,11 +56,11 @@ fun computeWithSpanAttribute(tracer: IJTracer, fun computeWithSpanAttributes(tracer: IJTracer, spanName: String, - attributesGenerator: (T) -> Map, + attributeGenerator: (T) -> Map, operation: () -> T): T { return computeWithSpan(tracer, spanName) { span -> val result = operation.invoke() - attributesGenerator.invoke(result).forEach { (attributeName, attributeValue) -> + attributeGenerator.invoke(result).forEach { (attributeName, attributeValue) -> span.setAttribute(attributeName, attributeValue) } return@computeWithSpan result @@ -72,25 +68,25 @@ fun computeWithSpanAttributes(tracer: IJTracer, } inline fun computeWithSpan(tracer: Tracer, spanName: String, operation: (Span) -> T): T { - return tracer.spanBuilder(spanName).useWithScope(operation) + return tracer.spanBuilder(spanName).useWithScopeBlocking(operation) } inline fun runWithSpan(tracer: Tracer, spanName: String, operation: (Span) -> Unit) { - tracer.spanBuilder(spanName).useWithScope(operation) + tracer.spanBuilder(spanName).useWithScopeBlocking(operation) } internal fun computeWithSpanIgnoreThrows(tracer: Tracer, spanName: String, operation: ThrowableNotNullFunction): T { - return tracer.spanBuilder(spanName).useWithScope(operation::`fun`) + return tracer.spanBuilder(spanName).useWithScopeBlocking(operation::`fun`) } internal fun runWithSpanIgnoreThrows(tracer: Tracer, spanName: String, operation: ThrowableConsumer) { - tracer.spanBuilder(spanName).useWithScope(operation::consume) + tracer.spanBuilder(spanName).useWithScopeBlocking(operation::consume) } fun runWithSpan(tracer: Tracer, spanName: String, operation: Consumer) { - tracer.spanBuilder(spanName).useWithScope(operation::accept) + tracer.spanBuilder(spanName).useWithScopeBlocking(operation::accept) } inline fun SpanBuilder.use(operation: (Span) -> T): T { @@ -103,12 +99,6 @@ inline fun Span.useWithScope(operation: () -> Unit) { } } -fun Span.runSpanWithScope(operation: Runnable) { - makeCurrent().use { - use { operation.run() } - } -} - inline fun Span.use(operation: (Span) -> T): T { try { return operation(this) diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionUpdater.kt b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionUpdater.kt index f12b31ab7e99..c13d8da7fe08 100644 --- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionUpdater.kt +++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionUpdater.kt @@ -32,6 +32,7 @@ import com.intellij.openapi.util.Key import com.intellij.openapi.util.registry.Registry import com.intellij.openapi.util.text.StringUtil import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.platform.ide.CoreUiCoroutineScopeHolder import com.intellij.util.SlowOperations import com.intellij.util.TimeoutUtil @@ -43,7 +44,6 @@ import com.intellij.util.ui.EDT import com.intellij.util.use import io.opentelemetry.api.trace.Span import kotlinx.coroutines.* -import kotlinx.coroutines.currentCoroutineContext import kotlinx.coroutines.flow.* import org.jetbrains.annotations.ApiStatus import java.awt.AWTEvent @@ -190,7 +190,7 @@ internal class ActionUpdater @JvmOverloads constructor( edtCallsCount++ edtWaitNanos += start - start0 currentEDTWaitMillis = TimeUnit.NANOSECONDS.toMillis(start - start0) - Utils.getTracer(true).spanBuilder(operationName).useWithScope { span: Span -> + Utils.getTracer(true).spanBuilder(operationName).useWithScopeBlocking { span: Span -> val prevStack = ourInEDTActionOperationStack val prevNoRules = isNoRulesInEDTSection var traceCookie: ThreadDumpService.Cookie? = null diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogData.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogData.java index 980d760788ed..2c3c4f132d33 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogData.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogData.java @@ -28,6 +28,7 @@ import com.intellij.vcs.log.impl.VcsLogIndexer; import com.intellij.vcs.log.impl.VcsLogSharedSettings; import com.intellij.vcs.log.util.PersistentUtil; import io.opentelemetry.api.trace.Span; +import kotlin.Unit; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; @@ -37,7 +38,7 @@ import java.util.*; import java.util.concurrent.*; import static com.intellij.openapi.vcs.VcsScopeKt.VcsScope; -import static com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.runSpanWithScope; +import static com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.useWithScope; public final class VcsLogData implements Disposable, VcsLogDataProvider { private static final Logger LOG = Logger.getInstance(VcsLogData.class); @@ -184,12 +185,13 @@ public final class VcsLogData implements Disposable, VcsLogDataProvider { false) { @Override public void run(@NotNull ProgressIndicator indicator) { - runSpanWithScope(span, () -> { + useWithScope(span, () -> { indicator.setIndeterminate(true); resetState(); readCurrentUser(); myRefresher.readFirstBlock(); fireDataPackChangeEvent(myRefresher.getCurrentDataPack()); + return Unit.INSTANCE; }); } diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/history/FileHistoryFilterer.kt b/platform/vcs-log/impl/src/com/intellij/vcs/log/history/FileHistoryFilterer.kt index 57b040d990a5..b391edeb1c27 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/history/FileHistoryFilterer.kt +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/history/FileHistoryFilterer.kt @@ -17,7 +17,7 @@ import com.intellij.openapi.vcs.telemetry.VcsTelemetrySpan.* import com.intellij.openapi.vcs.telemetry.VcsTelemetrySpanAttribute import com.intellij.openapi.vfs.VirtualFile import com.intellij.platform.diagnostic.telemetry.TelemetryManager -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.util.alsoIfNull import com.intellij.util.concurrency.AppExecutorUtil import com.intellij.util.containers.MultiMap @@ -136,7 +136,7 @@ internal class FileHistoryFilterer(private val logData: VcsLogData, private val filters: VcsLogFilterCollection, commitCount: CommitCountStage): Pair { val start = System.currentTimeMillis() - TelemetryManager.getInstance().getTracer(VcsScope).spanBuilder(LogHistory.Computing.getName()).useWithScope { scope -> + TelemetryManager.getInstance().getTracer(VcsScope).spanBuilder(LogHistory.Computing.getName()).useWithScopeBlocking { scope -> val isInitial = commitCount == CommitCountStage.INITIAL scope.setAttribute("filePath", filePath.toString()) @@ -289,7 +289,7 @@ internal class FileHistoryFilterer(private val logData: VcsLogData, private val private fun collectRenamesFromProvider(fileHistory: FileHistory): MultiMap, Rename> { if (fileHistory.unmatchedAdditionsDeletions.isEmpty()) return MultiMap.empty() - TelemetryManager.getInstance().getTracer(VcsScope).spanBuilder(LogHistory.CollectingRenames.getName()).useWithScope { span -> + TelemetryManager.getInstance().getTracer(VcsScope).spanBuilder(LogHistory.CollectingRenames.getName()).useWithScopeBlocking { span -> val renames = fileHistory.unmatchedAdditionsDeletions.mapNotNull { ad -> val parentHash = storage.getCommitId(ad.parent)!!.hash val childHash = storage.getCommitId(ad.child)!!.hash diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/visible/VcsLogFiltererImpl.kt b/platform/vcs-log/impl/src/com/intellij/vcs/log/visible/VcsLogFiltererImpl.kt index a7cb02d3bf55..ee2f5ad5faa8 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/visible/VcsLogFiltererImpl.kt +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/visible/VcsLogFiltererImpl.kt @@ -9,7 +9,7 @@ import com.intellij.openapi.vcs.telemetry.VcsTelemetrySpan.LogFilter import com.intellij.openapi.vcs.telemetry.VcsTelemetrySpanAttribute import com.intellij.openapi.vfs.VirtualFile import com.intellij.platform.diagnostic.telemetry.TelemetryManager -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.util.containers.ContainerUtil import com.intellij.vcs.log.* import com.intellij.vcs.log.data.* @@ -55,7 +55,7 @@ class VcsLogFiltererImpl(private val logProviders: Map + TelemetryManager.getInstance().getTracer(VcsScope).spanBuilder(LogFilter.getName()).useWithScopeBlocking { span -> if (hashFilter != null && !hashFilter.hashes.isEmpty()) { // hashes should be shown, no matter if they match other filters or not try { val hashFilterResult = applyHashFilter(dataPack, hashFilter, sortType, commitCount) diff --git a/plugins/kotlin/kotlin.performanceExtendedPlugin/src/com/intellij/performance/performancePlugin/commands/CreateKotlinFileCommand.kt b/plugins/kotlin/kotlin.performanceExtendedPlugin/src/com/intellij/performance/performancePlugin/commands/CreateKotlinFileCommand.kt index 68a8e06ccce9..00fcbdeb484e 100644 --- a/plugins/kotlin/kotlin.performanceExtendedPlugin/src/com/intellij/performance/performancePlugin/commands/CreateKotlinFileCommand.kt +++ b/plugins/kotlin/kotlin.performanceExtendedPlugin/src/com/intellij/performance/performancePlugin/commands/CreateKotlinFileCommand.kt @@ -7,7 +7,7 @@ import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.project.guessProjectDir import com.intellij.openapi.ui.playback.PlaybackContext import com.intellij.openapi.vfs.findDirectory -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.psi.PsiManager import com.intellij.psi.impl.PsiManagerImpl import com.intellij.psi.impl.file.PsiDirectoryImpl @@ -56,7 +56,7 @@ class CreateKotlinFileCommand(text: String, line: Int) : PerformanceCommandCorou VcsTestUtil.provisionVcsAddFileConfirmation(context.project, VcsTestUtil.VcsAddFileConfirmation.DO_NOTHING) ApplicationManager.getApplication().invokeAndWait(Context.current().wrap(Runnable { - PerformanceTestSpan.TRACER.spanBuilder(NAME).useWithScope { + PerformanceTestSpan.TRACER.spanBuilder(NAME).useWithScopeBlocking { val createdFile = createKotlinFileFromTemplateForTest(fileName, template, directory) createdFile?.let { LOG.info("Created kotlin file\n${createdFile.text}") diff --git a/plugins/performanceTesting/src/com/jetbrains/performancePlugin/commands/StartInlineRenameCommand.kt b/plugins/performanceTesting/src/com/jetbrains/performancePlugin/commands/StartInlineRenameCommand.kt index e04adc7bb52b..11a83c250c34 100644 --- a/plugins/performanceTesting/src/com/jetbrains/performancePlugin/commands/StartInlineRenameCommand.kt +++ b/plugins/performanceTesting/src/com/jetbrains/performancePlugin/commands/StartInlineRenameCommand.kt @@ -1,12 +1,12 @@ package com.jetbrains.performancePlugin.commands -import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope import com.intellij.ide.DataManager import com.intellij.openapi.actionSystem.CommonDataKeys import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.ui.playback.PlaybackContext import com.intellij.openapi.ui.playback.commands.AbstractCommand import com.intellij.openapi.wm.IdeFocusManager +import com.intellij.platform.diagnostic.telemetry.helpers.useWithScopeBlocking import com.intellij.psi.PsiDocumentManager import com.intellij.refactoring.InplaceRefactoringContinuation import com.intellij.refactoring.RefactoringSettings @@ -56,7 +56,7 @@ class StartInlineRenameCommand(text: String, line: Int) : AbstractCommand(text, actionCallback.reject("Renamers are empty") } else if (renamers.size == 1) { - PerformanceTestSpan.TRACER.spanBuilder(SPAN_NAME).useWithScope { + PerformanceTestSpan.TRACER.spanBuilder(SPAN_NAME).useWithScopeBlocking { renamers[0].performRename() actionCallback.setDone() }