From a7ef1ea5690ca4715f74f91957d3532a1d643736 Mon Sep 17 00:00:00 2001 From: Liubov Afanaseva Date: Mon, 16 Jun 2025 22:42:47 +0200 Subject: [PATCH] IJPL-176429 added sent.logs.files.calculated event to recorderId.event.log group GitOrigin-RevId: 6e1836bb5c1473827e346e37a43bd5179509a65c --- .../eventLog/DefaultFilesToSendProvider.kt | 34 +++++++++++++++++++ .../eventLog/EventLogInternalSendConfig.java | 3 +- .../eventLog/EventLogSystemCollector.kt | 22 +++++++++++- .../statistic/eventLog/LogSystemCollector.kt | 5 ++- .../eventLog/EventLogFilesProvider.kt | 26 -------------- 5 files changed, 58 insertions(+), 32 deletions(-) create mode 100644 platform/statistics/src/com/intellij/internal/statistic/eventLog/DefaultFilesToSendProvider.kt diff --git a/platform/statistics/src/com/intellij/internal/statistic/eventLog/DefaultFilesToSendProvider.kt b/platform/statistics/src/com/intellij/internal/statistic/eventLog/DefaultFilesToSendProvider.kt new file mode 100644 index 000000000000..0f9e5741ccb4 --- /dev/null +++ b/platform/statistics/src/com/intellij/internal/statistic/eventLog/DefaultFilesToSendProvider.kt @@ -0,0 +1,34 @@ +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.internal.statistic.eventLog + +import java.io.File + +internal class DefaultFilesToSendProvider( + recorderId: String, + private val maxFilesToSend: Int, + private val filterActiveFile: Boolean, +) : FilesToSendProvider { + private val eventLoggerProvider = StatisticsEventLogProviderUtil.getEventLogProvider(recorderId) + + override fun getFilesToSend(): List { + val logFilesProvider: EventLogFilesProvider = eventLoggerProvider.getLogFilesProvider() + val files = if (filterActiveFile) { + logFilesProvider.getLogFilesExceptActive() + } + else { + logFilesProvider.getLogFiles() + } + return getFilesToSend(files, maxFilesToSend).map { EventLogFile(it) } + } + + private fun getFilesToSend(files: List, maxFilesToSend: Int): List { + val filteredFiles = if (maxFilesToSend == -1) { + files.toList() + } + else { + files.take(maxFilesToSend) + } + eventLoggerProvider.eventLogSystemLogger.logFileToSendCalculated(files.size, maxFilesToSend, filteredFiles.size) + return filteredFiles + } +} \ No newline at end of file diff --git a/platform/statistics/src/com/intellij/internal/statistic/eventLog/EventLogInternalSendConfig.java b/platform/statistics/src/com/intellij/internal/statistic/eventLog/EventLogInternalSendConfig.java index 14a16c17c6e7..1bec77b7269f 100644 --- a/platform/statistics/src/com/intellij/internal/statistic/eventLog/EventLogInternalSendConfig.java +++ b/platform/statistics/src/com/intellij/internal/statistic/eventLog/EventLogInternalSendConfig.java @@ -62,7 +62,6 @@ public class EventLogInternalSendConfig implements EventLogSendConfig { @Override public @NotNull FilesToSendProvider getFilesToSendProvider() { int maxFilesToSend = EventLogConfiguration.getInstance().getOrCreate(myRecorderId).getMaxFilesToSend(); - EventLogFilesProvider logFilesProvider = StatisticsEventLogProviderUtil.getEventLogProvider(myRecorderId).getLogFilesProvider(); - return new DefaultFilesToSendProvider(logFilesProvider, maxFilesToSend, myFilterActiveFile); + return new DefaultFilesToSendProvider(myRecorderId, maxFilesToSend, myFilterActiveFile); } } diff --git a/platform/statistics/src/com/intellij/internal/statistic/eventLog/EventLogSystemCollector.kt b/platform/statistics/src/com/intellij/internal/statistic/eventLog/EventLogSystemCollector.kt index bbfa11e9f7bf..a1e8bd6ff78a 100644 --- a/platform/statistics/src/com/intellij/internal/statistic/eventLog/EventLogSystemCollector.kt +++ b/platform/statistics/src/com/intellij/internal/statistic/eventLog/EventLogSystemCollector.kt @@ -8,6 +8,7 @@ import com.intellij.internal.statistic.eventLog.connection.metadata.EventLogMeta import com.intellij.internal.statistic.eventLog.connection.metadata.EventLogMetadataUpdateError import com.intellij.internal.statistic.eventLog.connection.metadata.EventLogMetadataUpdateStage import com.intellij.internal.statistic.eventLog.events.EventFields +import com.intellij.internal.statistic.eventLog.events.EventId3 import com.intellij.internal.statistic.eventLog.events.EventPair import com.intellij.internal.statistic.eventLog.uploader.EventLogUploadException.EventLogUploadErrorType import com.intellij.internal.statistic.service.fus.collectors.CounterUsagesCollector @@ -29,7 +30,12 @@ import java.util.* @ApiStatus.Internal internal class EventLogSystemCollector(eventLoggerProvider: StatisticsEventLoggerProvider) : CounterUsagesCollector() { private val id = "${eventLoggerProvider.recorderId.lowercase(Locale.ENGLISH)}.event.log" - private val GROUP = EventLogGroup(id, eventLoggerProvider.version, eventLoggerProvider.recorderId) + private val GROUP = EventLogGroup(id, + // Increase the group's versions locally + // and not increase the versions in all StatisticsEventLoggerProvider + // in case of any changes in the groups + eventLoggerProvider.version + 1, + eventLoggerProvider.recorderId) override fun getGroup(): EventLogGroup = GROUP private val metadataLoadedEvent = GROUP.registerEvent("metadata.loaded", EventFields.Version, METADATA_LOADED_DESCRIPTION) @@ -72,6 +78,13 @@ internal class EventLogSystemCollector(eventLoggerProvider: StatisticsEventLogge errorLoadingConfigFailedField, errorTSLoadingConfigFailedField) + private val sentFilesCountCalculated: EventId3 = GROUP.registerEvent("sent.logs.files.calculated", + totalFilesCount, + maxSentFilesCount, + sentFilesCount, + "Calculate the count of logs files to send" + ) + fun logMetadataLoaded(version: String?) = metadataLoadedEvent.log(version) fun logMetadataUpdated(version: String?) = metadataUpdatedEvent.log(version) fun logMetadataLoadFailed(error: EventLogMetadataUpdateError) { @@ -127,6 +140,10 @@ internal class EventLogSystemCollector(eventLoggerProvider: StatisticsEventLogge loadingConfigFailedEvent.log(eventPairs) } + fun logFileToSendCalculated(totalFilesCount: Int, maxSentFilesCount: Int, sentFilesCount: Int) { + sentFilesCountCalculated.log(totalFilesCount, maxSentFilesCount,sentFilesCount) + } + companion object { private const val METADATA_LOADED_DESCRIPTION = "The metric is recorded in case the metadata was loaded" private const val METADATA_UPDATED_DESCRIPTION = "The metric is recorded in case the metadata was updated" @@ -205,5 +222,8 @@ internal class EventLogSystemCollector(eventLoggerProvider: StatisticsEventLogge ERROR_EXTERNAL_SEND_COMMAND_CREATION_FINISHED_DESCRIPTION) private val errorLoadingConfigFailedField = EventFields.StringValidatedByCustomRule("error", ClassNameRuleValidator::class.java) private val errorTSLoadingConfigFailedField = EventFields.Long("error_ts", ERROR_TS_LOADING_CONFIG_FAILED_DESCRIPTION) + private val totalFilesCount = EventFields.Int("total_files_count", "The total logs files count") + private val maxSentFilesCount = EventFields.Int("max_sent_files_count", "The max sent logs files count") + private val sentFilesCount = EventFields.Int("sent_files_count", "The sent logs files count") } } \ No newline at end of file diff --git a/platform/statistics/src/com/intellij/internal/statistic/eventLog/LogSystemCollector.kt b/platform/statistics/src/com/intellij/internal/statistic/eventLog/LogSystemCollector.kt index aa722cf5e0a9..0dfa45891b68 100644 --- a/platform/statistics/src/com/intellij/internal/statistic/eventLog/LogSystemCollector.kt +++ b/platform/statistics/src/com/intellij/internal/statistic/eventLog/LogSystemCollector.kt @@ -12,8 +12,8 @@ import org.jetbrains.annotations.ApiStatus */ @ApiStatus.Internal object LogSystemCollector : CounterUsagesCollector() { - private const val id = "system.log" - private val GROUP = EventLogGroup(id, 1, "FUS") + private const val ID = "system.log" + private val GROUP = EventLogGroup(ID, 1, "FUS") override fun getGroup(): EventLogGroup = GROUP val restartField: BooleanEventField = EventFields.Boolean("restart", "Don't start external uploader because there is restarted") @@ -33,5 +33,4 @@ object LogSystemCollector : CounterUsagesCollector() { updateInProgressField, sendingForAllRecordersDisabledField, failedToStartField) - } \ No newline at end of file diff --git a/platform/statistics/uploader/src/com/intellij/internal/statistic/eventLog/EventLogFilesProvider.kt b/platform/statistics/uploader/src/com/intellij/internal/statistic/eventLog/EventLogFilesProvider.kt index 0c8a3c6b87fe..82bcaaf76219 100644 --- a/platform/statistics/uploader/src/com/intellij/internal/statistic/eventLog/EventLogFilesProvider.kt +++ b/platform/statistics/uploader/src/com/intellij/internal/statistic/eventLog/EventLogFilesProvider.kt @@ -42,30 +42,4 @@ class DefaultEventLogFilesProvider( interface FilesToSendProvider { fun getFilesToSend(): List -} - -internal class DefaultFilesToSendProvider( - private val logFilesProvider: EventLogFilesProvider, - private val maxFilesToSend: Int, - private val filterActiveFile: Boolean, -) : FilesToSendProvider { - override fun getFilesToSend(): List { - val files = if (filterActiveFile) { - logFilesProvider.getLogFilesExceptActive() - } - else { - logFilesProvider.getLogFiles() - } - return getFilesToSend(files, maxFilesToSend).map { EventLogFile(it) } - } - - private fun getFilesToSend(files: List, maxFilesToSend: Int): List { - val filteredFiles = if (maxFilesToSend == -1) { - files.toList() - } - else { - files.take(maxFilesToSend) - } - return filteredFiles - } } \ No newline at end of file