Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-03-16 21:18:33 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-03-16 21:18:33 +0300
commitf64a639bcfa1fc2bc89ca7db268f594306edfd7c (patch)
treea2c3c2ebcc3b45e596949db485d6ed18ffaacfa1 /lib/gitlab/usage_data_counters
parentbfbc3e0d6583ea1a91f627528bedc3d65ba4b10f (diff)
Add latest changes from gitlab-org/gitlab@13-10-stable-eev13.10.0-rc40
Diffstat (limited to 'lib/gitlab/usage_data_counters')
-rw-r--r--lib/gitlab/usage_data_counters/aggregated_metrics/code_review.yml108
-rw-r--r--lib/gitlab/usage_data_counters/aggregated_metrics/common.yml24
-rw-r--r--lib/gitlab/usage_data_counters/counter_events/package_events.yml3
-rw-r--r--lib/gitlab/usage_data_counters/hll_redis_counter.rb6
-rw-r--r--lib/gitlab/usage_data_counters/known_events/code_review_events.yml40
-rw-r--r--lib/gitlab/usage_data_counters/known_events/common.yml15
-rw-r--r--lib/gitlab/usage_data_counters/known_events/ecosystem.yml46
-rw-r--r--lib/gitlab/usage_data_counters/known_events/package_events.yml30
-rw-r--r--lib/gitlab/usage_data_counters/known_events/quickactions.yml10
-rw-r--r--lib/gitlab/usage_data_counters/merge_request_activity_unique_counter.rb48
-rw-r--r--lib/gitlab/usage_data_counters/quick_action_activity_unique_counter.rb14
11 files changed, 312 insertions, 32 deletions
diff --git a/lib/gitlab/usage_data_counters/aggregated_metrics/code_review.yml b/lib/gitlab/usage_data_counters/aggregated_metrics/code_review.yml
new file mode 100644
index 00000000000..4c2355d526a
--- /dev/null
+++ b/lib/gitlab/usage_data_counters/aggregated_metrics/code_review.yml
@@ -0,0 +1,108 @@
+# code_review_extension_category_monthly_active_users
+# This is only metrics related to the VS Code Extension for now.
+#
+# code_review_category_monthly_active_users
+# This is the user based metrics. These should only be user based metrics and only be related to the Code Review things inside of GitLab.
+#
+# code_review_group_monthly_active_users
+# This is an aggregation of both of the above aggregations. It's intended to represent all users who interact with our group across all of our categories.
+---
+- name: code_review_group_monthly_active_users
+ operator: OR
+ feature_flag: usage_data_code_review_aggregation
+ source: redis
+ time_frame: [7d, 28d]
+ events: [
+ 'i_code_review_user_single_file_diffs',
+ 'i_code_review_user_create_mr',
+ 'i_code_review_user_close_mr',
+ 'i_code_review_user_reopen_mr',
+ 'i_code_review_user_resolve_thread',
+ 'i_code_review_user_unresolve_thread',
+ 'i_code_review_edit_mr_title',
+ 'i_code_review_edit_mr_desc',
+ 'i_code_review_user_merge_mr',
+ 'i_code_review_user_create_mr_comment',
+ 'i_code_review_user_edit_mr_comment',
+ 'i_code_review_user_remove_mr_comment',
+ 'i_code_review_user_create_review_note',
+ 'i_code_review_user_publish_review',
+ 'i_code_review_user_create_multiline_mr_comment',
+ 'i_code_review_user_edit_multiline_mr_comment',
+ 'i_code_review_user_remove_multiline_mr_comment',
+ 'i_code_review_user_add_suggestion',
+ 'i_code_review_user_apply_suggestion',
+ 'i_code_review_user_assigned',
+ 'i_code_review_user_review_requested',
+ 'i_code_review_user_approve_mr',
+ 'i_code_review_user_unapprove_mr',
+ 'i_code_review_user_marked_as_draft',
+ 'i_code_review_user_unmarked_as_draft',
+ 'i_code_review_user_approval_rule_added',
+ 'i_code_review_user_approval_rule_deleted',
+ 'i_code_review_user_approval_rule_edited',
+ 'i_code_review_user_vs_code_api_request',
+ 'i_code_review_user_toggled_task_item_status',
+ 'i_code_review_user_create_mr_from_issue',
+ 'i_code_review_user_mr_discussion_locked',
+ 'i_code_review_user_mr_discussion_unlocked',
+ 'i_code_review_user_time_estimate_changed',
+ 'i_code_review_user_time_spent_changed',
+ 'i_code_review_user_assignees_changed',
+ 'i_code_review_user_reviewers_changed',
+ 'i_code_review_user_milestone_changed',
+ 'i_code_review_user_labels_changed'
+ ]
+- name: code_review_category_monthly_active_users
+ operator: OR
+ feature_flag: usage_data_code_review_aggregation
+ source: redis
+ time_frame: [7d, 28d]
+ events: [
+ 'i_code_review_user_single_file_diffs',
+ 'i_code_review_user_create_mr',
+ 'i_code_review_user_close_mr',
+ 'i_code_review_user_reopen_mr',
+ 'i_code_review_user_resolve_thread',
+ 'i_code_review_user_unresolve_thread',
+ 'i_code_review_edit_mr_title',
+ 'i_code_review_edit_mr_desc',
+ 'i_code_review_user_merge_mr',
+ 'i_code_review_user_create_mr_comment',
+ 'i_code_review_user_edit_mr_comment',
+ 'i_code_review_user_remove_mr_comment',
+ 'i_code_review_user_create_review_note',
+ 'i_code_review_user_publish_review',
+ 'i_code_review_user_create_multiline_mr_comment',
+ 'i_code_review_user_edit_multiline_mr_comment',
+ 'i_code_review_user_remove_multiline_mr_comment',
+ 'i_code_review_user_add_suggestion',
+ 'i_code_review_user_apply_suggestion',
+ 'i_code_review_user_assigned',
+ 'i_code_review_user_review_requested',
+ 'i_code_review_user_approve_mr',
+ 'i_code_review_user_unapprove_mr',
+ 'i_code_review_user_marked_as_draft',
+ 'i_code_review_user_unmarked_as_draft',
+ 'i_code_review_user_approval_rule_added',
+ 'i_code_review_user_approval_rule_deleted',
+ 'i_code_review_user_approval_rule_edited',
+ 'i_code_review_user_toggled_task_item_status',
+ 'i_code_review_user_create_mr_from_issue',
+ 'i_code_review_user_mr_discussion_locked',
+ 'i_code_review_user_mr_discussion_unlocked',
+ 'i_code_review_user_time_estimate_changed',
+ 'i_code_review_user_time_spent_changed',
+ 'i_code_review_user_assignees_changed',
+ 'i_code_review_user_reviewers_changed',
+ 'i_code_review_user_milestone_changed',
+ 'i_code_review_user_labels_changed'
+ ]
+- name: code_review_extension_category_monthly_active_users
+ operator: OR
+ feature_flag: usage_data_code_review_aggregation
+ source: redis
+ time_frame: [7d, 28d]
+ events: [
+ 'i_code_review_user_vs_code_api_request'
+ ]
diff --git a/lib/gitlab/usage_data_counters/aggregated_metrics/common.yml b/lib/gitlab/usage_data_counters/aggregated_metrics/common.yml
index 4d92202e7fd..73a55b5d5fa 100644
--- a/lib/gitlab/usage_data_counters/aggregated_metrics/common.yml
+++ b/lib/gitlab/usage_data_counters/aggregated_metrics/common.yml
@@ -1,3 +1,5 @@
+# Aggregated metrics that include EE only event names within `events:` attribute have to be defined at ee/lib/gitlab/usage_data_counters/aggregated_metrics/common.yml
+# instead of this file.
#- name: unique name of aggregated metric
# operator: aggregation operator. Valid values are:
# - "OR": counts unique elements that were observed triggering any of following events
@@ -7,6 +9,10 @@
# source: defines which datasource will be used to locate events that should be included in aggregated metric. Valid values are:
# - database
# - redis
+# time_frame: defines time frames for aggregated metrics:
+# - 7d - last 7 days
+# - 28d - last 28 days
+# - all - all historical available data, this time frame is not available for redis source
# feature_flag: name of development feature flag that will be checked before metrics aggregation is performed.
# Corresponding feature flag should have `default_enabled` attribute set to `false`.
# This attribute is OPTIONAL and can be omitted, when `feature_flag` is missing no feature flag will be checked.
@@ -14,18 +20,22 @@
- name: compliance_features_track_unique_visits_union
operator: OR
source: redis
+ time_frame: [7d, 28d]
events: ['g_compliance_audit_events', 'g_compliance_dashboard', 'i_compliance_audit_events', 'a_compliance_audit_events_api', 'i_compliance_credential_inventory']
- name: product_analytics_test_metrics_union
operator: OR
source: redis
+ time_frame: [7d, 28d]
events: ['i_search_total', 'i_search_advanced', 'i_search_paid']
- name: product_analytics_test_metrics_intersection
operator: AND
source: redis
+ time_frame: [7d, 28d]
events: ['i_search_total', 'i_search_advanced', 'i_search_paid']
- name: incident_management_alerts_total_unique_counts
operator: OR
source: redis
+ time_frame: [7d, 28d]
events: [
'incident_management_alert_status_changed',
'incident_management_alert_assigned',
@@ -35,6 +45,7 @@
- name: incident_management_incidents_total_unique_counts
operator: OR
source: redis
+ time_frame: [7d, 28d]
events: [
'incident_management_incident_created',
'incident_management_incident_reopened',
@@ -51,10 +62,11 @@
- name: i_testing_paid_monthly_active_user_total
operator: OR
source: redis
+ time_frame: [7d, 28d]
events: [
- 'i_testing_web_performance_widget_total',
- 'i_testing_full_code_quality_report_total',
- 'i_testing_group_code_coverage_visit_total',
- 'i_testing_load_performance_widget_total',
- 'i_testing_metrics_report_widget_total'
-]
+ 'i_testing_web_performance_widget_total',
+ 'i_testing_full_code_quality_report_total',
+ 'i_testing_group_code_coverage_visit_total',
+ 'i_testing_load_performance_widget_total',
+ 'i_testing_metrics_report_widget_total'
+ ]
diff --git a/lib/gitlab/usage_data_counters/counter_events/package_events.yml b/lib/gitlab/usage_data_counters/counter_events/package_events.yml
index f6bddabdd44..e1648245f3f 100644
--- a/lib/gitlab/usage_data_counters/counter_events/package_events.yml
+++ b/lib/gitlab/usage_data_counters/counter_events/package_events.yml
@@ -41,6 +41,9 @@
- i_package_pypi_delete_package
- i_package_pypi_pull_package
- i_package_pypi_push_package
+- i_package_rubygems_delete_package
+- i_package_rubygems_pull_package
+- i_package_rubygems_push_package
- i_package_tag_delete_package
- i_package_tag_pull_package
- i_package_tag_push_package
diff --git a/lib/gitlab/usage_data_counters/hll_redis_counter.rb b/lib/gitlab/usage_data_counters/hll_redis_counter.rb
index 68ae239debb..336bef081a6 100644
--- a/lib/gitlab/usage_data_counters/hll_redis_counter.rb
+++ b/lib/gitlab/usage_data_counters/hll_redis_counter.rb
@@ -127,11 +127,15 @@ module Gitlab
return unless Gitlab::CurrentSettings.usage_ping_enabled?
event = event_for(event_name)
- raise UnknownEvent, "Unknown event #{event_name}" unless event.present?
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(UnknownEvent.new("Unknown event #{event_name}")) unless event.present?
return unless feature_enabled?(event)
Gitlab::Redis::HLL.add(key: redis_key(event, time, context), value: values, expiry: expiry(event))
+ rescue => e
+ # Ignore any exceptions unless is dev or test env
+ # The application flow should not be blocked by erros in tracking
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e)
end
# The array of valid context on which we allow tracking
diff --git a/lib/gitlab/usage_data_counters/known_events/code_review_events.yml b/lib/gitlab/usage_data_counters/known_events/code_review_events.yml
index d657c5487d7..18c5dc73de2 100644
--- a/lib/gitlab/usage_data_counters/known_events/code_review_events.yml
+++ b/lib/gitlab/usage_data_counters/known_events/code_review_events.yml
@@ -164,3 +164,43 @@
category: code_review
aggregation: weekly
feature_flag: usage_data_i_code_review_user_create_mr_from_issue
+- name: i_code_review_user_mr_discussion_locked
+ redis_slot: code_review
+ category: code_review
+ aggregation: weekly
+ feature_flag: usage_data_i_code_review_user_mr_discussion_locked
+- name: i_code_review_user_mr_discussion_unlocked
+ redis_slot: code_review
+ category: code_review
+ aggregation: weekly
+ feature_flag: usage_data_i_code_review_user_mr_discussion_unlocked
+- name: i_code_review_user_time_estimate_changed
+ redis_slot: code_review
+ category: code_review
+ aggregation: weekly
+ feature_flag: usage_data_i_code_review_user_time_estimate_changed
+- name: i_code_review_user_time_spent_changed
+ redis_slot: code_review
+ category: code_review
+ aggregation: weekly
+ feature_flag: usage_data_i_code_review_user_time_spent_changed
+- name: i_code_review_user_assignees_changed
+ redis_slot: code_review
+ category: code_review
+ aggregation: weekly
+ feature_flag: usage_data_i_code_review_user_assignees_changed
+- name: i_code_review_user_reviewers_changed
+ redis_slot: code_review
+ category: code_review
+ aggregation: weekly
+ feature_flag: usage_data_i_code_review_user_reviewers_changed
+- name: i_code_review_user_milestone_changed
+ redis_slot: code_review
+ category: code_review
+ aggregation: weekly
+ feature_flag: usage_data_i_code_review_user_milestone_changed
+- name: i_code_review_user_labels_changed
+ redis_slot: code_review
+ category: code_review
+ aggregation: weekly
+ feature_flag: usage_data_i_code_review_user_labels_changed
diff --git a/lib/gitlab/usage_data_counters/known_events/common.yml b/lib/gitlab/usage_data_counters/known_events/common.yml
index 79f319b2d58..80a79682338 100644
--- a/lib/gitlab/usage_data_counters/known_events/common.yml
+++ b/lib/gitlab/usage_data_counters/known_events/common.yml
@@ -439,3 +439,18 @@
redis_slot: pipeline_authoring
aggregation: weekly
feature_flag: usage_data_unique_users_committing_ciconfigfile
+- name: o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile
+ category: pipeline_authoring
+ redis_slot: pipeline_authoring
+ aggregation: weekly
+ feature_flag: usage_data_o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile
+# Epic events
+#
+# We are using the same slot of issue events 'project_management' for
+# epic events to allow data aggregation.
+# More information in: https://gitlab.com/gitlab-org/gitlab/-/issues/322405
+- name: g_project_management_epic_created
+ category: epics_usage
+ redis_slot: project_management
+ aggregation: daily
+ feature_flag: track_epics_activity
diff --git a/lib/gitlab/usage_data_counters/known_events/ecosystem.yml b/lib/gitlab/usage_data_counters/known_events/ecosystem.yml
index 3fd02164f74..1c765bb1830 100644
--- a/lib/gitlab/usage_data_counters/known_events/ecosystem.yml
+++ b/lib/gitlab/usage_data_counters/known_events/ecosystem.yml
@@ -20,3 +20,49 @@
redis_slot: ecosystem
aggregation: weekly
feature_flag: usage_data_track_ecosystem_jira_service
+- name: i_ecosystem_slack_service_issue_notification
+ category: ecosystem
+ redis_slot: ecosystem
+ aggregation: weekly
+ feature_flag: usage_data_track_ecosystem_slack_service
+- name: i_ecosystem_slack_service_push_notification
+ category: ecosystem
+ redis_slot: ecosystem
+ aggregation: weekly
+ feature_flag: usage_data_track_ecosystem_slack_service
+- name: i_ecosystem_slack_service_deployment_notification
+ category: ecosystem
+ redis_slot: ecosystem
+ aggregation: weekly
+ feature_flag: usage_data_track_ecosystem_slack_service
+- name: i_ecosystem_slack_service_wiki_page_notification
+ category: ecosystem
+ redis_slot: ecosystem
+ aggregation: weekly
+ feature_flag: usage_data_track_ecosystem_slack_service
+- name: i_ecosystem_slack_service_merge_request_notification
+ category: ecosystem
+ redis_slot: ecosystem
+ aggregation: weekly
+ feature_flag: usage_data_track_ecosystem_slack_service
+- name: i_ecosystem_slack_service_note_notification
+ category: ecosystem
+ redis_slot: ecosystem
+ aggregation: weekly
+ feature_flag: usage_data_track_ecosystem_slack_service
+- name: i_ecosystem_slack_service_tag_push_notification
+ category: ecosystem
+ redis_slot: ecosystem
+ aggregation: weekly
+ feature_flag: usage_data_track_ecosystem_slack_service
+- name: i_ecosystem_slack_service_confidential_note_notification
+ category: ecosystem
+ redis_slot: ecosystem
+ aggregation: weekly
+ feature_flag: usage_data_track_ecosystem_slack_service
+- name: i_ecosystem_slack_service_confidential_issue_notification
+ category: ecosystem
+ redis_slot: ecosystem
+ aggregation: weekly
+ feature_flag: usage_data_track_ecosystem_slack_service
+
diff --git a/lib/gitlab/usage_data_counters/known_events/package_events.yml b/lib/gitlab/usage_data_counters/known_events/package_events.yml
index 78a2a587b34..b7e583003c8 100644
--- a/lib/gitlab/usage_data_counters/known_events/package_events.yml
+++ b/lib/gitlab/usage_data_counters/known_events/package_events.yml
@@ -3,109 +3,95 @@
category: deploy_token_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_composer_user
category: user_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_conan_deploy_token
category: deploy_token_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_conan_user
category: user_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_container_deploy_token
category: deploy_token_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_container_user
category: user_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_debian_deploy_token
category: deploy_token_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_debian_user
category: user_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_generic_deploy_token
category: deploy_token_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_generic_user
category: user_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_golang_deploy_token
category: deploy_token_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_golang_user
category: user_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_maven_deploy_token
category: deploy_token_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_maven_user
category: user_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_npm_deploy_token
category: deploy_token_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_npm_user
category: user_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_nuget_deploy_token
category: deploy_token_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_nuget_user
category: user_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_pypi_deploy_token
category: deploy_token_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_pypi_user
category: user_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
+- name: i_package_rubygems_deploy_token
+ category: deploy_token_packages
+ aggregation: weekly
+ redis_slot: package
+- name: i_package_rubygems_user
+ category: user_packages
+ aggregation: weekly
+ redis_slot: package
- name: i_package_tag_deploy_token
category: deploy_token_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
- name: i_package_tag_user
category: user_packages
aggregation: weekly
redis_slot: package
- feature_flag: collect_package_events_redis
diff --git a/lib/gitlab/usage_data_counters/known_events/quickactions.yml b/lib/gitlab/usage_data_counters/known_events/quickactions.yml
index bf292047da0..0fe65afb237 100644
--- a/lib/gitlab/usage_data_counters/known_events/quickactions.yml
+++ b/lib/gitlab/usage_data_counters/known_events/quickactions.yml
@@ -324,3 +324,13 @@
redis_slot: quickactions
aggregation: weekly
feature_flag: usage_data_track_quickactions
+- name: i_quickactions_invite_email_single
+ category: quickactions
+ redis_slot: quickactions
+ aggregation: weekly
+ feature_flag: usage_data_track_quickactions
+- name: i_quickactions_invite_email_multiple
+ category: quickactions
+ redis_slot: quickactions
+ aggregation: weekly
+ feature_flag: usage_data_track_quickactions
diff --git a/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter.rb b/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter.rb
index b9856e1f74a..eb28a387a97 100644
--- a/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter.rb
+++ b/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter.rb
@@ -35,6 +35,15 @@ module Gitlab
MR_EDIT_MR_TITLE_ACTION = 'i_code_review_edit_mr_title'
MR_EDIT_MR_DESC_ACTION = 'i_code_review_edit_mr_desc'
MR_CREATE_FROM_ISSUE_ACTION = 'i_code_review_user_create_mr_from_issue'
+ MR_DISCUSSION_LOCKED_ACTION = 'i_code_review_user_mr_discussion_locked'
+ MR_DISCUSSION_UNLOCKED_ACTION = 'i_code_review_user_mr_discussion_unlocked'
+ MR_TIME_ESTIMATE_CHANGED_ACTION = 'i_code_review_user_time_estimate_changed'
+ MR_TIME_SPENT_CHANGED_ACTION = 'i_code_review_user_time_spent_changed'
+ MR_ASSIGNEES_CHANGED_ACTION = 'i_code_review_user_assignees_changed'
+ MR_REVIEWERS_CHANGED_ACTION = 'i_code_review_user_reviewers_changed'
+ MR_INCLUDING_CI_CONFIG_ACTION = 'o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile'
+ MR_MILESTONE_CHANGED_ACTION = 'i_code_review_user_milestone_changed'
+ MR_LABELS_CHANGED_ACTION = 'i_code_review_user_labels_changed'
class << self
def track_mr_diffs_action(merge_request:)
@@ -153,6 +162,45 @@ module Gitlab
track_unique_action_by_user(MR_CREATE_FROM_ISSUE_ACTION, user)
end
+ def track_discussion_locked_action(user:)
+ track_unique_action_by_user(MR_DISCUSSION_LOCKED_ACTION, user)
+ end
+
+ def track_discussion_unlocked_action(user:)
+ track_unique_action_by_user(MR_DISCUSSION_UNLOCKED_ACTION, user)
+ end
+
+ def track_time_estimate_changed_action(user:)
+ track_unique_action_by_user(MR_TIME_ESTIMATE_CHANGED_ACTION, user)
+ end
+
+ def track_time_spent_changed_action(user:)
+ track_unique_action_by_user(MR_TIME_SPENT_CHANGED_ACTION, user)
+ end
+
+ def track_assignees_changed_action(user:)
+ track_unique_action_by_user(MR_ASSIGNEES_CHANGED_ACTION, user)
+ end
+
+ def track_reviewers_changed_action(user:)
+ track_unique_action_by_user(MR_REVIEWERS_CHANGED_ACTION, user)
+ end
+
+ def track_mr_including_ci_config(user:, merge_request:)
+ return unless Feature.enabled?(:usage_data_o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile, user, default_enabled: :yaml)
+ return unless merge_request.includes_ci_config?
+
+ track_unique_action_by_user(MR_INCLUDING_CI_CONFIG_ACTION, user)
+ end
+
+ def track_milestone_changed_action(user:)
+ track_unique_action_by_user(MR_MILESTONE_CHANGED_ACTION, user)
+ end
+
+ def track_labels_changed_action(user:)
+ track_unique_action_by_user(MR_LABELS_CHANGED_ACTION, user)
+ end
+
private
def track_unique_action_by_merge_request(action, merge_request)
diff --git a/lib/gitlab/usage_data_counters/quick_action_activity_unique_counter.rb b/lib/gitlab/usage_data_counters/quick_action_activity_unique_counter.rb
index f757b51f73c..15c68fb3945 100644
--- a/lib/gitlab/usage_data_counters/quick_action_activity_unique_counter.rb
+++ b/lib/gitlab/usage_data_counters/quick_action_activity_unique_counter.rb
@@ -34,6 +34,8 @@ module Gitlab
event_name_for_unassign(args)
when 'unlabel', 'remove_label'
event_name_for_unlabel(args)
+ when 'invite_email'
+ 'invite_email' + event_name_quantifier(args.split)
else
name
end
@@ -44,10 +46,8 @@ module Gitlab
if args.count == 1 && args.first == 'me'
'assign_self'
- elsif args.count == 1
- 'assign_single'
else
- 'assign_multiple'
+ 'assign' + event_name_quantifier(args)
end
end
@@ -82,6 +82,14 @@ module Gitlab
'unlabel_all'
end
end
+
+ def event_name_quantifier(args)
+ if args.count == 1
+ '_single'
+ else
+ '_multiple'
+ end
+ end
end
end
end