mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 06:39:38 +07:00
Make "Path exists" check atomic
Review: https://jetbrains.team/p/ij/reviews/107079 This commit fixes flaky: java.util.concurrent.ExecutionException: java.nio.file.NoSuchFileException: /mnt/agent/temp/buildTmp/startupPerformanceTests14887929589063980070/perf-startup/cache/projects/unpacked/spring-petclinic-kotlin-master/.idea/kotlinc.xml at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396) at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) at com.intellij.openapi.progress.util.BackgroundTaskUtil.lambda$createBackgroundTask$10(BackgroundTaskUtil.java:293) at com.intellij.openapi.util.ObjectTree.runWithTrace(ObjectTree.java:127) at com.intellij.openapi.util.ObjectTree.executeAll(ObjectTree.java:159) at com.intellij.openapi.util.Disposer.dispose(Disposer.java:264) at com.intellij.openapi.util.Disposer.dispose(Disposer.java:252) at com.intellij.openapi.progress.util.BackgroundTaskUtil.lambda$createBackgroundTask$11(BackgroundTaskUtil.java:315) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1810) at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:248) at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:28) at com.intellij.util.concurrency.BoundedTaskExecutor$1.executeFirstTaskAndHelpQueue(BoundedTaskExecutor.java:221) at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:227) at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:210) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: java.nio.file.NoSuchFileException: /mnt/agent/temp/buildTmp/startupPerformanceTests14887929589063980070/perf-startup/cache/projects/unpacked/spring-petclinic-kotlin-master/.idea/kotlinc.xml at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:218) at java.base/java.nio.file.Files.newByteChannel(Files.java:380) at java.base/java.nio.file.Files.newByteChannel(Files.java:432) at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:422) at java.base/java.nio.file.Files.newInputStream(Files.java:160) at org.jetbrains.kotlin.idea.compiler.configuration.KotlinJpsPluginSettingsKt.fileIsNotEmpty(KotlinJpsPluginSettings.kt:271) at org.jetbrains.kotlin.idea.compiler.configuration.KotlinJpsPluginSettings$Companion.readFromKotlincXmlOrIpr(KotlinJpsPluginSettings.kt:129) at org.jetbrains.kotlin.idea.macros.KotlinBundledPathMacroContributor.getProjectPathMacros(KotlinBundledPathMacroContributor.kt:26) at com.intellij.openapi.components.impl.ProjectWidePathMacroContributor.getAllMacros(ProjectWidePathMacroContributor.java:38) at com.intellij.openapi.components.impl.ProjectPathMacroManager.getExpandMacroMap(ProjectPathMacroManager.java:49) at com.intellij.openapi.components.PathMacroManager.expandPath(PathMacroManager.java:120) at com.intellij.openapi.externalSystem.service.project.autoimport.ProjectAware.getSettingsFiles(ProjectAware.kt:40) at com.intellij.openapi.externalSystem.autoimport.ProjectSettingsTracker$SettingsFilesAsyncSupplier$cachingAsyncSupplier$1.get(ProjectSettingsTracker.kt:345) at kotlin.jvm.internal.PropertyReference0.invoke(PropertyReference0.java:35) at com.intellij.openapi.externalSystem.autoimport.settings.AsyncSupplier$Companion$blocking$1.supply(AsyncSupplier.kt:19) at com.intellij.openapi.externalSystem.autoimport.settings.BackgroundAsyncSupplier.supply$lambda$0(BackgroundAsyncSupplier.kt:18) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:186) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679) at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:173) at com.intellij.openapi.progress.util.BackgroundTaskUtil.lambda$submitTask$8(BackgroundTaskUtil.java:271) at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ... 12 more This flaky failure is reported to be observable from time to time in ijplatform_IjPlatform231_IntegrationPerformanceTestsKotlinEAPLinux GitOrigin-RevId: c9f96f1fd279c93cdfaba2c4121acefefc4af464
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3181c29d1e
commit
de1d03a388
@@ -24,8 +24,6 @@ import org.jetbrains.kotlin.config.SettingConstants.KOTLIN_JPS_PLUGIN_SETTINGS_S
|
||||
import org.jetbrains.kotlin.config.toKotlinVersion
|
||||
import org.jetbrains.kotlin.idea.base.plugin.KotlinBasePluginBundle
|
||||
import java.nio.file.Path
|
||||
import kotlin.io.path.bufferedReader
|
||||
import kotlin.io.path.exists
|
||||
|
||||
@State(name = KOTLIN_JPS_PLUGIN_SETTINGS_SECTION, storages = [(Storage(SettingConstants.KOTLIN_COMPILER_SETTINGS_FILE))])
|
||||
class KotlinJpsPluginSettings(project: Project) : BaseKotlinCompilerSettings<JpsPluginSettings>(project) {
|
||||
@@ -126,10 +124,15 @@ class KotlinJpsPluginSettings(project: Project) : BaseKotlinCompilerSettings<Jps
|
||||
* Please, prefer [getInstance] if possible.
|
||||
*/
|
||||
fun readFromKotlincXmlOrIpr(path: Path): JpsPluginSettings? {
|
||||
return path.takeIf { it.fileIsNotEmpty() }
|
||||
?.let { JDOMUtil.load(path) }
|
||||
?.children
|
||||
?.singleOrNull { it.getAttributeValue("name") == KotlinJpsPluginSettings::class.java.simpleName }
|
||||
val root = try {
|
||||
JDOMUtil.load(path)
|
||||
} catch (ex: java.nio.file.NoSuchFileException) {
|
||||
return null
|
||||
} catch (ex: org.jdom.JDOMException) { // e.g. Unexpected End-of-input in prolog
|
||||
return null
|
||||
}
|
||||
return root.children
|
||||
.singleOrNull { it.getAttributeValue("name") == KotlinJpsPluginSettings::class.java.simpleName }
|
||||
?.let { xmlElement ->
|
||||
JpsPluginSettings().apply {
|
||||
XmlSerializer.deserializeInto(this, xmlElement)
|
||||
@@ -267,5 +270,3 @@ private fun showNotificationUnsupportedJpsPluginVersion(
|
||||
.setImportant(true)
|
||||
.notify(project)
|
||||
}
|
||||
|
||||
fun Path.fileIsNotEmpty() = exists() && bufferedReader().use { it.readLine() != null }
|
||||
|
||||
Reference in New Issue
Block a user