Commits search executes 1 query per commit author
When searching commits to render avatar we execute 1 SQL query per author. I think we should fix/cache that.
SELECT "users".* FROM ((SELECT "users".* FROM "users" WHERE (LOWER("users"."email") IN (LOWER('nicolo.mezzopera@gmail.com'))) AND "users"."confirmed_at" IS NOT NULL) UNION (SELECT "users".* FROM "users" INNER JOIN "emails" ON "emails"."user_id" = "users"."id" WHERE "emails"."email" = 'nicolo.mezzopera@gmail.com' AND "users"."confirmed_at" IS NOT NULL AND "emails"."confirmed_at" IS NOT NULL)) users
Backtrace of a SQL call
[
"ee/lib/ee/peek/views/active_record.rb:11:in `generate_detail'",
"lib/peek/views/active_record.rb:52:in `block in setup_subscribers'",
"app/models/commit.rb:275:in `block (2 levels) in lazy_author'",
"app/models/commit.rb:274:in `each'",
"app/models/commit.rb:274:in `block in lazy_author'",
"app/models/commit.rb:284:in `block in author'",
"lib/gitlab/utils/strong_memoize.rb:30:in `strong_memoize'",
"app/models/commit.rb:283:in `author'",
"lib/gitlab/cache/request_cache.rb:43:in `block (3 levels) in request_cache'",
"lib/gitlab/cache/request_cache.rb:43:in `block (2 levels) in request_cache'",
"app/models/concerns/cache_markdown_field.rb:38:in `banzai_render_context'",
"lib/banzai/object_renderer.rb:82:in `context_for'",
"lib/banzai/object_renderer.rb:66:in `block in post_process_documents'",
"lib/banzai/object_renderer.rb:65:in `map'",
"lib/banzai/object_renderer.rb:65:in `post_process_documents'",
"lib/banzai/object_renderer.rb:36:in `render'",
"lib/banzai/commit_renderer.rb:10:in `block in render'",
"lib/banzai/commit_renderer.rb:10:in `each'",
"lib/banzai/commit_renderer.rb:10:in `render'",
"app/controllers/concerns/renders_commits.rb:26:in `prepare_commits_for_rendering'",
"app/presenters/search_service_presenter.rb:29:in `search_objects'",
"app/controllers/search_controller.rb:40:in `show'",
"app/controllers/application_controller.rb:536:in `block in allow_gitaly_ref_name_caching'",
"lib/gitlab/gitaly_client.rb:341:in `allow_ref_name_caching'",
"app/controllers/application_controller.rb:535:in `allow_gitaly_ref_name_caching'",
"ee/lib/gitlab/ip_address_state.rb:10:in `with'",
"ee/app/controllers/ee/application_controller.rb:44:in `set_current_ip_address'",
"app/controllers/application_controller.rb:485:in `set_current_admin'",
"lib/gitlab/session.rb:11:in `with_session'",
"app/controllers/application_controller.rb:476:in `set_session_storage'",
"app/controllers/application_controller.rb:470:in `set_locale'",
"app/controllers/application_controller.rb:463:in `block in set_current_context'",
"lib/gitlab/application_context.rb:70:in `block in use'",
"lib/gitlab/application_context.rb:70:in `use'",
"lib/gitlab/application_context.rb:27:in `with_context'",
"app/controllers/application_controller.rb:454:in `set_current_context'",
"ee/lib/omni_auth/strategies/group_saml.rb:41:in `other_phase'",
"lib/gitlab/jira/middleware.rb:19:in `call'"
]
Edited by Dmitry Gruzd