[fus] Isolate failing state collectors from others

GitOrigin-RevId: a816bbd8416ebd2d067e56ca6415712229b6c10d
This commit is contained in:
Yuriy Artamonov
2025-02-11 19:08:19 +00:00
committed by intellij-monorepo-bot
parent 99a65e2167
commit e1b081a0e7
@@ -61,7 +61,7 @@ class FUStateUsagesLogger private constructor(coroutineScope: CoroutineScope) :
project: Project?,
recorderLoggers: MutableMap<String, StatisticsEventLogger>,
usagesCollector: FeatureUsagesCollector,
metrics: Set<MetricEvent>,
metrics: suspend () -> Set<MetricEvent>,
) {
var group = usagesCollector.group
if (group == null) {
@@ -77,7 +77,9 @@ class FUStateUsagesLogger private constructor(coroutineScope: CoroutineScope) :
}
try {
logUsagesAsStateEvents(project = project, group = group, metrics = metrics, logger = logger)
val data = metrics.invoke()
logUsagesAsStateEvents(project = project, group = group, metrics = data, logger = logger)
}
catch (e: Throwable) {
if (project != null && project.isDisposed) {
@@ -87,6 +89,8 @@ class FUStateUsagesLogger private constructor(coroutineScope: CoroutineScope) :
val data = FeatureUsageData(recorder).addProject(project)
@Suppress("UnstableApiUsage")
logger.logAsync(group, EventLogSystemEvents.STATE_COLLECTOR_FAILED, data.build(), true).asDeferred().join()
LOG.error(e)
}
}
@@ -182,7 +186,7 @@ class FUStateUsagesLogger private constructor(coroutineScope: CoroutineScope) :
project = null,
recorderLoggers = recorderLoggers,
usagesCollector = usagesCollector,
metrics = usagesCollector.getMetricsAsync(),
metrics = usagesCollector::getMetricsAsync,
)
}
}
@@ -225,13 +229,11 @@ class ProjectFUStateUsagesLogger(
}
launch {
val metrics = usagesCollector.collect(project)
FUStateUsagesLogger.logMetricsOrError(
project = project,
recorderLoggers = recorderLoggers,
usagesCollector = usagesCollector,
metrics = metrics,
metrics = { usagesCollector.collect(project) },
)
}
}