IDEA-265654: create StructuredIdeActivity from IdeActivityDefinition

GitOrigin-RevId: cbe8a5516e4b20ceb9d20b30df709c562ab6f7b6
This commit is contained in:
Anastasia Ivanova
2021-04-15 05:59:25 +03:00
committed by intellij-monorepo-bot
parent 1987978ca3
commit 7b5f6d8cf5
14 changed files with 34 additions and 30 deletions
@@ -42,7 +42,7 @@ public final class RunConfigurationUsageTriggerCollector extends CounterUsagesCo
private static final EnumEventField<RunConfigurationFinishType> FINISH_TYPE =
EventFields.Enum("finish_type", RunConfigurationFinishType.class);
private static final IdeActivityDefinition ACTIVITY_GROUP = GROUP.registerIdeActivity( null,
private static final IdeActivityDefinition ACTIVITY_GROUP = GROUP.registerIdeActivity(null,
new EventField<?>[]{ADDITIONAL_FIELD, EXECUTOR,
TARGET,
RunConfigurationTypeUsagesCollector.FACTORY_FIELD,
@@ -62,8 +62,8 @@ public final class RunConfigurationUsageTriggerCollector extends CounterUsagesCo
@NotNull ConfigurationFactory factory,
@NotNull Executor executor,
@Nullable RunConfiguration runConfiguration) {
return new StructuredIdeActivity(project, ACTIVITY_GROUP)
.startedAsync(() -> ReadAction.nonBlocking(() -> buildContext(project, factory, executor, runConfiguration))
return ACTIVITY_GROUP
.startedAsync(project, () -> ReadAction.nonBlocking(() -> buildContext(project, factory, executor, runConfiguration))
.expireWith(project)
.submit(NonUrgentExecutor.getInstance()));
}
@@ -26,7 +26,7 @@ fun anonymizeSystemId(systemId: ProjectSystemId?) =
fun importActivityStarted(project: Project, externalSystemId: ProjectSystemId,
dataSupplier: (() -> List<EventPair<*>>)?): StructuredIdeActivity {
return StructuredIdeActivity(project, IMPORT_ACTIVITY).started{
return IMPORT_ACTIVITY.started(project){
val data: MutableList<EventPair<*>> = mutableListOf(EXTERNAL_SYSTEM_ID.with(anonymizeSystemId(externalSystemId)))
if(dataSupplier != null) {
data.addAll(dataSupplier())
@@ -2,7 +2,6 @@
package com.intellij.openapi.externalSystem.statistics
import com.intellij.execution.impl.statistics.RunConfigurationUsageTriggerCollector
import com.intellij.internal.statistic.IdeActivityDefinition
import com.intellij.internal.statistic.eventLog.EventLogGroup
import com.intellij.internal.statistic.eventLog.events.EventFields
import com.intellij.internal.statistic.service.fus.collectors.CounterUsagesCollector
@@ -21,8 +20,8 @@ class ExternalSystemTaskCollector : CounterUsagesCollector() {
@JvmField
val EXTERNAL_TASK_ACTIVITY = GROUP.registerIdeActivity(null, startEventAdditionalFields = arrayOf(TASK_ID_FIELD,
TARGET_FIELD,
EXTERNAL_SYSTEM_ID))
TARGET_FIELD,
EXTERNAL_SYSTEM_ID))
}
override fun getGroup(): EventLogGroup {
@@ -67,7 +67,7 @@ class ExternalSystemUsagesCollector : ProjectUsagesCollector() {
systemId: ProjectSystemId?,
taskId: ExternalSystemTaskId,
environmentConfigurationProvider: TargetEnvironmentConfigurationProvider?): StructuredIdeActivity {
return StructuredIdeActivity(project, EXTERNAL_TASK_ACTIVITY).started {
return EXTERNAL_TASK_ACTIVITY.started(project) {
val data: MutableList<EventPair<*>> = mutableListOf(EXTERNAL_SYSTEM_ID.with(anonymizeSystemId(systemId)))
data.add(TASK_ID_FIELD.with(taskId))
environmentConfigurationProvider?.environmentConfiguration?.typeId?.also {
@@ -1,7 +1,6 @@
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.openapi.externalSystem.statistics
import com.intellij.internal.statistic.IdeActivityDefinition
import com.intellij.internal.statistic.eventLog.EventLogGroup
import com.intellij.internal.statistic.eventLog.events.EventFields
import com.intellij.internal.statistic.service.fus.collectors.CounterUsagesCollector
@@ -15,7 +14,8 @@ class ProjectImportCollector : CounterUsagesCollector() {
val TASK_CLASS = EventFields.Class("task_class")
@JvmField
val IMPORT_ACTIVITY = GROUP.registerIdeActivity( null, startEventAdditionalFields=arrayOf(EXTERNAL_SYSTEM_ID, TASK_CLASS, EventFields.PluginInfo))
val IMPORT_ACTIVITY = GROUP.registerIdeActivity(null, startEventAdditionalFields = arrayOf(EXTERNAL_SYSTEM_ID, TASK_CLASS,
EventFields.PluginInfo))
}
override fun getGroup(): EventLogGroup {
@@ -181,7 +181,7 @@ public final class ProjectTaskManagerImpl extends ProjectTaskManager {
});
StructuredIdeActivity activity = new StructuredIdeActivity(myProject, BUILD_ACTIVITY).started(() ->
StructuredIdeActivity activity = BUILD_ACTIVITY.started(myProject, () ->
Collections.singletonList(TASK_RUNNER.with(map(toRun, it -> it.first.getClass().getName())))
);
@@ -1,7 +1,6 @@
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.task.impl
import com.intellij.internal.statistic.IdeActivityDefinition
import com.intellij.internal.statistic.eventLog.EventLogGroup
import com.intellij.internal.statistic.eventLog.events.EventFields
import com.intellij.internal.statistic.service.fus.collectors.CounterUsagesCollector
@@ -11,10 +10,10 @@ class ProjectTaskManagerStatisticsCollector : CounterUsagesCollector() {
val GROUP = EventLogGroup("build", 4)
@JvmField
val TASK_RUNNER = EventFields.StringListValidatedByCustomRule("task_runner_class","class_name")
val TASK_RUNNER = EventFields.StringListValidatedByCustomRule("task_runner_class", "class_name")
@JvmField
val BUILD_ACTIVITY = GROUP.registerIdeActivity( null, startEventAdditionalFields = arrayOf(TASK_RUNNER, EventFields.PluginInfo))
val BUILD_ACTIVITY = GROUP.registerIdeActivity(null, startEventAdditionalFields = arrayOf(TASK_RUNNER, EventFields.PluginInfo))
}
override fun getGroup(): EventLogGroup {
@@ -606,7 +606,7 @@ public class DumbServiceImpl extends DumbService implements Disposable, Modifica
try (ProgressSuspender suspender = ProgressSuspender.markSuspendable(visibleIndicator, IdeBundle.message("progress.text.indexing.paused"))) {
myHeavyActivities.setCurrentSuspenderAndSuspendIfRequested(suspender);
StructuredIdeActivity activity = new StructuredIdeActivity(myProject, IndexingStatisticsCollector.INDEXING_ACTIVITY).started();
StructuredIdeActivity activity = IndexingStatisticsCollector.INDEXING_ACTIVITY.started(myProject);
final ShutDownTracker shutdownTracker = ShutDownTracker.getInstance();
final Thread self = Thread.currentThread();
@@ -1,7 +1,6 @@
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.openapi.project
import com.intellij.internal.statistic.IdeActivityDefinition
import com.intellij.internal.statistic.eventLog.EventLogGroup
import com.intellij.internal.statistic.eventLog.events.EventFields
import com.intellij.internal.statistic.service.fus.collectors.CounterUsagesCollector
@@ -14,7 +13,7 @@ class IndexingStatisticsCollector : CounterUsagesCollector() {
val STAGE_CLASS = EventFields.Class("stage_class")
@JvmField
val INDEXING_ACTIVITY = GROUP.registerIdeActivity( null, startEventAdditionalFields = arrayOf(EventFields.PluginInfo))
val INDEXING_ACTIVITY = GROUP.registerIdeActivity(null, startEventAdditionalFields = arrayOf(EventFields.PluginInfo))
@JvmField
val INDEXING_STAGE = INDEXING_ACTIVITY.registerStage("stage", arrayOf(STAGE_CLASS))
@@ -16,8 +16,8 @@ import java.util.concurrent.atomic.AtomicInteger
private val LOG = Logger.getInstance(StructuredIdeActivity::class.java)
@ApiStatus.Internal
class StructuredIdeActivity constructor(private val projectOrNullForApplication: Project?,
private val ideActivityDefinition: IdeActivityDefinition) {
class StructuredIdeActivity internal constructor(private val projectOrNullForApplication: Project?,
private val ideActivityDefinition: IdeActivityDefinition) {
private val id = counter.incrementAndGet()
private var state = IdeActivityState.NOT_STARTED
@@ -86,14 +86,23 @@ class StructuredIdeActivity constructor(private val projectOrNullForApplication:
}
}
class IdeActivityDefinition constructor(val group: EventLogGroup,
val activityName: String?,
startEventAdditionalFields: Array<EventField<*>> = emptyArray(),
finishEventAdditionalFields: Array<EventField<*>> = emptyArray()) {
class IdeActivityDefinition internal constructor(val group: EventLogGroup,
val activityName: String?,
startEventAdditionalFields: Array<EventField<*>> = emptyArray(),
finishEventAdditionalFields: Array<EventField<*>> = emptyArray()) {
val started = group.registerVarargEvent(appendActivityName(activityName, "started"), activityId, *startEventAdditionalFields)
val finished = group.registerVarargEvent(appendActivityName(activityName, "finished"), activityId, EventFields.DurationMs,
*finishEventAdditionalFields)
@JvmOverloads
fun started(project: Project?, dataSupplier: (() -> List<EventPair<*>>)? = null): StructuredIdeActivity {
return StructuredIdeActivity(project, this).started(dataSupplier)
}
fun startedAsync(project: Project?, dataSupplier: () -> Promise<List<EventPair<*>>>): StructuredIdeActivity {
return StructuredIdeActivity(project, this).startedAsync(dataSupplier)
}
private fun appendActivityName(activityName: String?, state: String): String {
if (activityName == null) return state
return "$activityName.$state"
@@ -1,7 +1,6 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.openapi.vcs.changes.actions
import com.intellij.internal.statistic.IdeActivityDefinition
import com.intellij.internal.statistic.eventLog.EventLogGroup
import com.intellij.internal.statistic.eventLog.events.EventFields
import com.intellij.internal.statistic.service.fus.collectors.CounterUsagesCollector
@@ -26,7 +25,8 @@ class VcsStatisticsCollector : CounterUsagesCollector() {
private val WAS_UPDATING_BEFORE = EventFields.Boolean("wasUpdatingBefore")
private val CHANGES_DELTA = EventFields.Int("changesDelta")
private val UNVERSIONED_DELTA = EventFields.Int("unversionedDelta")
private val CHANGES_VIEW_REFRESH = GROUP.registerVarargEvent("changes.view.refresh", WAS_UPDATING_BEFORE, CHANGES_DELTA, UNVERSIONED_DELTA)
private val CHANGES_VIEW_REFRESH = GROUP.registerVarargEvent("changes.view.refresh", WAS_UPDATING_BEFORE, CHANGES_DELTA,
UNVERSIONED_DELTA)
val NON_MODAL_COMMIT_STATE_CHANGED = GROUP.registerEvent("non.modal.commit.state.changed", EventFields.Enabled)
val NON_MODAL_COMMIT_PROMOTION_SHOWN = GROUP.registerEvent("non.modal.commit.promotion.shown")
@@ -334,7 +334,7 @@ public abstract class AbstractCommonUpdateAction extends AbstractVcsAction imple
if (progressIndicator != null) {
progressIndicator.setIndeterminate(false);
}
StructuredIdeActivity activity = new StructuredIdeActivity(myProject, UPDATE_ACTIVITY).started();
StructuredIdeActivity activity = UPDATE_ACTIVITY.started(myProject);
try {
int toBeProcessed = myVcsToVirtualFiles.size();
int processed = 0;
@@ -2,7 +2,6 @@
package com.intellij.vcs.commit
import com.intellij.ide.util.DelegatingProgressIndicator
import com.intellij.internal.statistic.StructuredIdeActivity
import com.intellij.openapi.application.TransactionGuard
import com.intellij.openapi.diagnostic.logger
import com.intellij.openapi.progress.ProcessCanceledException
@@ -50,7 +49,7 @@ abstract class AbstractCommitter(
val task = object : Task.Backgroundable(project, taskName, true, configuration.commitOption) {
override fun run(indicator: ProgressIndicator) {
val vcsManager = ProjectLevelVcsManager.getInstance(project)
val activity = StructuredIdeActivity(myProject, COMMIT_ACTIVITY).started() // NON-NLS
val activity = COMMIT_ACTIVITY.started(myProject) // NON-NLS
vcsManager.startBackgroundVcsOperation()
try {
delegateCommitToVcsThread()
@@ -3,7 +3,6 @@ package git4idea.fetch
import com.intellij.dvcs.MultiMessage
import com.intellij.dvcs.MultiRootMessage
import com.intellij.internal.statistic.StructuredIdeActivity
import com.intellij.notification.NotificationType
import com.intellij.openapi.diagnostic.logger
import com.intellij.openapi.progress.EmptyProgressIndicator
@@ -100,7 +99,7 @@ internal class GitFetchSupportImpl(private val project: Project) : GitFetchSuppo
try {
fetchRequestCounter.incrementAndGet()
return withIndicator {
val activity = StructuredIdeActivity(project, VcsStatisticsCollector.FETCH_ACTIVITY).started()
val activity = VcsStatisticsCollector.FETCH_ACTIVITY.started(project)
val tasks = fetchInParallel(arguments)
val results = waitForFetchTasks(tasks)