mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
IJPL-149317 Disable Write Intent Lock for runnables executed on EDT
Add explicit locks in Performance testing community plugin. GitOrigin-RevId: caa5abbc927ed464a3728b26111b5c99294bda9f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
4ac8160910
commit
22b79b4cc4
@@ -2,6 +2,7 @@ package com.jetbrains.performancePlugin.commands
|
||||
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.application.PathManager
|
||||
import com.intellij.openapi.application.writeIntentReadAction
|
||||
import com.intellij.openapi.roots.ProjectFileIndex
|
||||
import com.intellij.openapi.ui.playback.PlaybackContext
|
||||
import com.intellij.openapi.ui.playback.commands.PlaybackCommandCoroutineAdapter
|
||||
@@ -44,17 +45,19 @@ class CollectAllFilesCommand(text: String, line: Int) : PlaybackCommandCoroutine
|
||||
}
|
||||
withContext(Dispatchers.EDT) {
|
||||
val index = ProjectFileIndex.getInstance(project)
|
||||
extensions.forEach { extension ->
|
||||
getAllFilesByExt(project, extension, GlobalSearchScope.projectScope(project))
|
||||
.forEach { file ->
|
||||
val searchCondition = when (fromSources) {
|
||||
true -> index.isInSourceContent(file)
|
||||
else -> true
|
||||
writeIntentReadAction {
|
||||
extensions.forEach { extension ->
|
||||
getAllFilesByExt(project, extension, GlobalSearchScope.projectScope(project))
|
||||
.forEach { file ->
|
||||
val searchCondition = when (fromSources) {
|
||||
true -> index.isInSourceContent(file)
|
||||
else -> true
|
||||
}
|
||||
if (searchCondition) {
|
||||
collectedFiles.appendText(file.path + "\n")
|
||||
}
|
||||
}
|
||||
if (searchCondition) {
|
||||
collectedFiles.appendText(file.path + "\n")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.intellij.internal.performance.LatencyRecord
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.application.writeIntentReadAction
|
||||
import com.intellij.openapi.editor.actionSystem.LatencyListener
|
||||
import com.intellij.openapi.fileEditor.impl.NonProjectFileWritingAccessProvider
|
||||
import com.intellij.openapi.ui.playback.PlaybackContext
|
||||
@@ -85,7 +86,9 @@ class DelayTypeCommand(text: String, line: Int) : PlaybackCommandCoroutineAdapte
|
||||
NonProjectFileWritingAccessProvider.allowWriting(listOf(editor.virtualFile))
|
||||
}
|
||||
span.addEvent("Typing ${text[i]}")
|
||||
typingTarget.type(text[i].toString())
|
||||
writeIntentReadAction {
|
||||
typingTarget.type(text[i].toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.intellij.openapi.actionSystem.*
|
||||
import com.intellij.openapi.actionSystem.ex.ActionManagerEx.Companion.getInstanceEx
|
||||
import com.intellij.openapi.actionSystem.ex.ActionUtil
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.application.writeIntentReadAction
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager
|
||||
import com.intellij.openapi.ui.playback.PlaybackContext
|
||||
@@ -41,7 +42,9 @@ class ExecuteEditorActionCommand(text: String, line: Int) : PlaybackCommandCorou
|
||||
withContext(Dispatchers.EDT) {
|
||||
spanRef.set(span.startSpan())
|
||||
val job = DaemonCodeAnalyzerListener.listen(connection, spanRef, expectedOpenedFile = expectedOpenedFile)
|
||||
executeAction(editor, parameter)
|
||||
writeIntentReadAction {
|
||||
executeAction(editor, parameter)
|
||||
}
|
||||
job.waitForComplete()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.intellij.ide.RecentProjectsManager
|
||||
import com.intellij.ide.impl.OpenProjectTask
|
||||
import com.intellij.ide.lightEdit.LightEdit
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.application.writeIntentReadAction
|
||||
import com.intellij.openapi.diagnostic.logger
|
||||
import com.intellij.openapi.progress.EmptyProgressIndicator
|
||||
import com.intellij.openapi.progress.ProgressIndicator
|
||||
@@ -83,14 +84,16 @@ class OpenProjectCommand(text: String, line: Int) : PlaybackCommandCoroutineAdap
|
||||
|
||||
if (!project.isDefault) {
|
||||
withContext(Dispatchers.EDT) {
|
||||
WindowManager.getInstance().updateDefaultFrameInfoOnProjectClose(project)
|
||||
writeIntentReadAction {
|
||||
WindowManager.getInstance().updateDefaultFrameInfoOnProjectClose(project)
|
||||
|
||||
// for backward compatibility with older code
|
||||
if (closeProjectBeforeOpening) {
|
||||
// prevent the script from stopping on project close
|
||||
context.setProject(null)
|
||||
// for backward compatibility with older code
|
||||
if (closeProjectBeforeOpening) {
|
||||
// prevent the script from stopping on project close
|
||||
context.setProject(null)
|
||||
|
||||
ProjectManager.getInstance().closeAndDispose(project)
|
||||
ProjectManager.getInstance().closeAndDispose(project)
|
||||
}
|
||||
}
|
||||
}
|
||||
RecentProjectsManager.getInstance().updateLastProjectPath()
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.jetbrains.performancePlugin.commands
|
||||
|
||||
import com.intellij.configurationStore.saveProjectsAndApp
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.application.writeIntentReadAction
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.ui.playback.PlaybackContext
|
||||
@@ -20,7 +21,7 @@ class SaveDocumentsAndSettingsCommand(text: String, line: Int) : PlaybackCommand
|
||||
suspend fun save(project: Project) {
|
||||
withContext(CoroutineName("save docs and project settings")) {
|
||||
withContext(Dispatchers.EDT) {
|
||||
FileDocumentManager.getInstance().saveAllDocuments()
|
||||
writeIntentReadAction { FileDocumentManager.getInstance().saveAllDocuments() }
|
||||
}
|
||||
saveProjectsAndApp(forceSavingAllSettings = true, onlyProject = project)
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl
|
||||
import com.intellij.codeInsight.daemon.impl.SeverityRegistrar
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.application.PathManager
|
||||
import com.intellij.openapi.application.writeIntentReadAction
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager
|
||||
import com.intellij.openapi.ui.playback.PlaybackContext
|
||||
import com.intellij.openapi.ui.playback.commands.PlaybackCommandCoroutineAdapter
|
||||
@@ -33,12 +34,14 @@ class StoreHighlightingResultsCommand(text: String, line: Int) : PlaybackCommand
|
||||
val editor = FileEditorManager.getInstance(project).selectedTextEditor
|
||||
require(editor != null)
|
||||
withContext(Dispatchers.EDT) {
|
||||
val psiFile = PsiDocumentManager.getInstance(project).getPsiFile(editor.document)
|
||||
require(psiFile != null)
|
||||
for (severity in SeverityRegistrar.getSeverityRegistrar(project).allSeverities) {
|
||||
val highlights = DaemonCodeAnalyzerImpl.getHighlights(editor.document, severity, project)
|
||||
highlights.forEach { highlight ->
|
||||
fileForStoringHighlights.appendText("${severity}☆${highlight.description}☆${editor.document.getLineNumber(highlight.actualStartOffset)}" + "\n")
|
||||
writeIntentReadAction {
|
||||
val psiFile = PsiDocumentManager.getInstance(project).getPsiFile(editor.document)
|
||||
require(psiFile != null)
|
||||
for (severity in SeverityRegistrar.getSeverityRegistrar(project).allSeverities) {
|
||||
val highlights = DaemonCodeAnalyzerImpl.getHighlights(editor.document, severity, project)
|
||||
highlights.forEach { highlight ->
|
||||
fileForStoringHighlights.appendText("${severity}☆${highlight.description}☆${editor.document.getLineNumber(highlight.actualStartOffset)}" + "\n")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user