Listing user activity can take more than 15s
Meta issue: https://gitlab.com/gitlab-org/gitlab-ce/issues/40522
Sentry: https://sentry.gitlap.com/gitlab/gitlabcom/issues/110395/
Query:
SELECT
"events"."id" AS t0_r0,
"events"."project_id" AS t0_r1,
"events"."author_id" AS t0_r2,
"events"."target_id" AS t0_r3,
"events"."created_at" AS t0_r4,
"events"."updated_at" AS t0_r5,
"events"."action" AS t0_r6,
"events"."target_type" AS t0_r7,
"users"."id" AS t1_r0,
"users"."email" AS t1_r1,
"users"."encrypted_password" AS t1_r2,
"users"."reset_password_token" AS t1_r3,
"users"."reset_password_sent_at" AS t1_r4,
"users"."remember_created_at" AS t1_r5,
"users"."sign_in_count" AS t1_r6,
"users"."current_sign_in_at" AS t1_r7,
"users"."last_sign_in_at" AS t1_r8,
"users"."current_sign_in_ip" AS t1_r9,
"users"."last_sign_in_ip" AS t1_r10,
"users"."created_at" AS t1_r11,
"users"."updated_at" AS t1_r12,
"users"."name" AS t1_r13,
"users"."admin" AS t1_r14,
"users"."projects_limit" AS t1_r15,
"users"."skype" AS t1_r16,
"users"."linkedin" AS t1_r17,
"users"."twitter" AS t1_r18,
"users"."bio" AS t1_r19,
"users"."failed_attempts" AS t1_r20,
"users"."locked_at" AS t1_r21,
"users"."username" AS t1_r22,
"users"."can_create_group" AS t1_r23,
"users"."can_create_team" AS t1_r24,
"users"."state" AS t1_r25,
"users"."color_scheme_id" AS t1_r26,
"users"."password_expires_at" AS t1_r27,
"users"."created_by_id" AS t1_r28,
"users"."avatar" AS t1_r29,
"users"."confirmation_token" AS t1_r30,
"users"."confirmed_at" AS t1_r31,
"users"."confirmation_sent_at" AS t1_r32,
"users"."unconfirmed_email" AS t1_r33,
"users"."hide_no_ssh_key" AS t1_r34,
"users"."website_url" AS t1_r35,
"users"."last_credential_check_at" AS t1_r36,
"users"."admin_email_unsubscribed_at" AS t1_r37,
"users"."notification_email" AS t1_r38,
"users"."hide_no_password" AS t1_r39,
"users"."password_automatically_set" AS t1_r40,
"users"."location" AS t1_r41,
"users"."public_email" AS t1_r42,
"users"."encrypted_otp_secret" AS t1_r43,
"users"."encrypted_otp_secret_iv" AS t1_r44,
"users"."encrypted_otp_secret_salt" AS t1_r45,
"users"."otp_required_for_login" AS t1_r46,
"users"."otp_backup_codes" AS t1_r47,
"users"."dashboard" AS t1_r48,
"users"."project_view" AS t1_r49,
"users"."consumed_timestep" AS t1_r50,
"users"."layout" AS t1_r51,
"users"."hide_project_limit" AS t1_r52,
"users"."unlock_token" AS t1_r53,
"users"."note" AS t1_r54,
"users"."otp_grace_period_started_at" AS t1_r55,
"users"."external" AS t1_r56,
"users"."organization" AS t1_r57,
"users"."incoming_email_token" AS t1_r58,
"users"."auditor" AS t1_r59,
"users"."ghost" AS t1_r60,
"users"."require_two_factor_authentication_from_group" AS t1_r61,
"users"."two_factor_grace_period" AS t1_r62,
"users"."notified_of_own_activity" AS t1_r63,
"users"."support_bot" AS t1_r64,
"users"."last_activity_on" AS t1_r65,
"users"."preferred_language" AS t1_r66,
"users"."rss_token" AS t1_r67,
"users"."email_opted_in" AS t1_r68,
"users"."email_opted_in_ip" AS t1_r69,
"users"."email_opted_in_source_id" AS t1_r70,
"users"."email_opted_in_at" AS t1_r71,
"users"."theme_id" AS t1_r72,
"projects"."id" AS t2_r0,
"projects"."name" AS t2_r1,
"projects"."path" AS t2_r2,
"projects"."description" AS t2_r3,
"projects"."created_at" AS t2_r4,
"projects"."updated_at" AS t2_r5,
"projects"."creator_id" AS t2_r6,
"projects"."namespace_id" AS t2_r7,
"projects"."last_activity_at" AS t2_r8,
"projects"."import_url" AS t2_r9,
"projects"."visibility_level" AS t2_r10,
"projects"."archived" AS t2_r11,
"projects"."import_status" AS t2_r12,
"projects"."merge_requests_template" AS t2_r13,
"projects"."star_count" AS t2_r14,
"projects"."merge_requests_rebase_enabled" AS t2_r15,
"projects"."import_type" AS t2_r16,
"projects"."import_source" AS t2_r17,
"projects"."avatar" AS t2_r18,
"projects"."approvals_before_merge" AS t2_r19,
"projects"."reset_approvals_on_push" AS t2_r20,
"projects"."merge_requests_ff_only_enabled" AS t2_r21,
"projects"."issues_template" AS t2_r22,
"projects"."mirror" AS t2_r23,
"projects"."mirror_last_update_at" AS t2_r24,
"projects"."mirror_last_successful_update_at" AS t2_r25,
"projects"."mirror_user_id" AS t2_r26,
"projects"."import_error" AS t2_r27,
"projects"."ci_id" AS t2_r28,
"projects"."shared_runners_enabled" AS t2_r29,
"projects"."runners_token" AS t2_r30,
"projects"."build_coverage_regex" AS t2_r31,
"projects"."build_allow_git_fetch" AS t2_r32,
"projects"."build_timeout" AS t2_r33,
"projects"."mirror_trigger_builds" AS t2_r34,
"projects"."public_builds" AS t2_r35,
"projects"."pending_delete" AS t2_r36,
"projects"."last_repository_check_failed" AS t2_r37,
"projects"."last_repository_check_at" AS t2_r38,
"projects"."container_registry_enabled" AS t2_r39,
"projects"."only_allow_merge_if_pipeline_succeeds" AS t2_r40,
"projects"."has_external_issue_tracker" AS t2_r41,
"projects"."repository_storage" AS t2_r42,
"projects"."request_access_enabled" AS t2_r43,
"projects"."has_external_wiki" AS t2_r44,
"projects"."repository_read_only" AS t2_r45,
"projects"."lfs_enabled" AS t2_r46,
"projects"."description_html" AS t2_r47,
"projects"."only_allow_merge_if_all_discussions_are_resolved" AS t2_r48,
"projects"."repository_size_limit" AS t2_r49,
"projects"."service_desk_enabled" AS t2_r50,
"projects"."printing_merge_request_link_enabled" AS t2_r51,
"projects"."auto_cancel_pending_pipelines" AS t2_r52,
"projects"."import_jid" AS t2_r53,
"projects"."cached_markdown_version" AS t2_r54,
"projects"."last_repository_updated_at" AS t2_r55,
"projects"."ci_config_path" AS t2_r56,
"projects"."disable_overriding_approvers_per_merge_request" AS t2_r57,
"projects"."delete_error" AS t2_r58,
"projects"."storage_version" AS t2_r59,
"projects"."resolve_outdated_diff_discussions" AS t2_r60,
"projects"."remote_mirror_available_overridden" AS t2_r61,
"namespaces"."id" AS t3_r0,
"namespaces"."name" AS t3_r1,
"namespaces"."path" AS t3_r2,
"namespaces"."owner_id" AS t3_r3,
"namespaces"."created_at" AS t3_r4,
"namespaces"."updated_at" AS t3_r5,
"namespaces"."type" AS t3_r6,
"namespaces"."description" AS t3_r7,
"namespaces"."avatar" AS t3_r8,
"namespaces"."membership_lock" AS t3_r9,
"namespaces"."share_with_group_lock" AS t3_r10,
"namespaces"."visibility_level" AS t3_r11,
"namespaces"."request_access_enabled" AS t3_r12,
"namespaces"."ldap_sync_status" AS t3_r13,
"namespaces"."ldap_sync_error" AS t3_r14,
"namespaces"."ldap_sync_last_update_at" AS t3_r15,
"namespaces"."ldap_sync_last_successful_update_at" AS t3_r16,
"namespaces"."ldap_sync_last_sync_at" AS t3_r17,
"namespaces"."deleted_at" AS t3_r18,
"namespaces"."lfs_enabled" AS t3_r19,
"namespaces"."description_html" AS t3_r20,
"namespaces"."parent_id" AS t3_r21,
"namespaces"."shared_runners_minutes_limit" AS t3_r22,
"namespaces"."repository_size_limit" AS t3_r23,
"namespaces"."require_two_factor_authentication" AS t3_r24,
"namespaces"."two_factor_grace_period" AS t3_r25,
"namespaces"."cached_markdown_version" AS t3_r26,
"namespaces"."plan_id" AS t3_r27
FROM "events"
LEFT OUTER JOIN "users" ON "users"."id" = "events"."author_id"
LEFT OUTER JOIN "projects" ON "projects"."id" = "events"."project_id"
LEFT OUTER JOIN "namespaces" ON "namespaces"."id" = "projects"."namespace_id"
WHERE "events"."author_id" = :profile_user_id
AND (
EXISTS (
SELECT 1
FROM "project_authorizations"
WHERE "project_authorizations"."user_id" = :current_user_id
AND (project_authorizations.project_id = projects.id)
)
OR projects.visibility_level IN (10,20)
)
ORDER BY "events"."id" DESC
LIMIT 20 OFFSET 0
EXPLAIN ANALYZE
: https://explain.depesz.com/s/MGaz (where 111111
is the profile_user_id
, and 999999
is the current_user_id
)
Planning time: 2.290 ms
Execution time: 37153.404 ms
Edited by Douwe Maan