mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
[PSI] new: added collecting uncommited documents traces when they become uncommited
This collection process is disabled by default. It is enabled by the `ide.activity.tracking.enable.debug` registry key. GitOrigin-RevId: 9f9959f33cab6922869b57204f478f24ef82c198
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3c633516d1
commit
fa1bf0583e
@@ -6,7 +6,10 @@ import com.intellij.diagnostic.dumpCoroutines
|
||||
import com.intellij.openapi.components.Service
|
||||
import com.intellij.openapi.components.service
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.registry.Registry
|
||||
import com.intellij.platform.backend.observation.Observation
|
||||
import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase
|
||||
import com.intellij.testFramework.concurrency.waitForPromiseAndPumpEdt
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.TimeoutCancellationException
|
||||
@@ -42,6 +45,7 @@ object TestObservation {
|
||||
}
|
||||
catch (_: TimeoutCancellationException) {
|
||||
val activityDump = Observation.dumpAwaitedActivitiesToString()
|
||||
val uncommitedDocuments = dumpUncommitedDocumentsWithTracesToString(project)
|
||||
val coroutineDump = dumpCoroutines()
|
||||
val threadDump = dumpThreadsToString()
|
||||
|
||||
@@ -50,6 +54,9 @@ object TestObservation {
|
||||
|------ Operation log begin ------
|
||||
|$operationLog
|
||||
|------- Operation log end -------
|
||||
|--- Uncommited documents begin --
|
||||
|$uncommitedDocuments
|
||||
|---- Uncommited documents end ---
|
||||
|------ Activity dump begin ------
|
||||
|$activityDump
|
||||
|------- Activity dump end -------
|
||||
@@ -64,6 +71,17 @@ object TestObservation {
|
||||
}
|
||||
}
|
||||
|
||||
private fun dumpUncommitedDocumentsWithTracesToString(project: Project): String {
|
||||
if (!Registry.`is`("ide.activity.tracking.enable.debug")) {
|
||||
return "Enable 'ide.activity.tracking.enable.debug' registry option to collect uncommited document traces"
|
||||
}
|
||||
val psiDocumentManager = PsiDocumentManager.getInstance(project) as PsiDocumentManagerBase
|
||||
return psiDocumentManager.uncommitedDocumentsWithTraces.entries
|
||||
.joinToString("\n") {
|
||||
it.key.toString() + ": " + it.value.stackTraceToString()
|
||||
}
|
||||
}
|
||||
|
||||
@Service(Service.Level.PROJECT)
|
||||
private class CoroutineScopeService(private val coroutineScope: CoroutineScope) {
|
||||
companion object {
|
||||
|
||||
Reference in New Issue
Block a user