runners GraphQL query is querying for tags even if not requested by user
Summary
Steps to reproduce
The following query is causing tags to be queries for the runners, even though the user is not requesting them:
query getRunners {
runners {
edges {
node {
id
}
}
}
}
What is the current bug behavior?
Resulting queries:
Ci::Runner Load (0.3ms) SELECT "ci_runners".* FROM "ci_runners" ORDER BY "ci_runners"."created_at" DESC, "ci_runners"."id" DESC LIMIT 100 /*application:web,correlation_id:b2f5c7cf-fb2f-420a-b0c9-71596c74a04d,endpoint_id:GraphqlController#execute,line:/lib/gitlab/graphql/pagination/keyset/connection.rb:108:in `nodes'*/
↳ lib/gitlab/graphql/pagination/keyset/connection.rb:108:in `nodes'
ActsAsTaggableOn::Tagging Load (0.3ms) SELECT "taggings".* FROM "taggings" WHERE "taggings"."taggable_type" = 'Ci::Runner' AND "taggings"."context" = 'tags' AND "taggings"."taggable_id" IN (24, 2) /*application:web,correlation_id:b2f5c7cf-fb2f-420a-b0c9-71596c74a04d,endpoint_id:GraphqlController#execute,line:/lib/gitlab/graphql/pagination/keyset/connection.rb:108:in `nodes'*/
↳ lib/gitlab/graphql/pagination/keyset/connection.rb:108:in `nodes'
ActsAsTaggableOn::Tag Load (0.3ms) SELECT "tags".* FROM "tags" WHERE "tags"."id" IN (3, 2, 1, 4) /*application:web,correlation_id:b2f5c7cf-fb2f-420a-b0c9-71596c74a04d,endpoint_id:GraphqlController#execute,line:/lib/gitlab/graphql/pagination/keyset/connection.rb:108:in `nodes'*/
↳ lib/gitlab/graphql/pagination/keyset/connection.rb:108:in `nodes'
What is the expected correct behavior?
Resulting queries:
Ci::Runner Load (0.3ms) SELECT "ci_runners".* FROM "ci_runners" ORDER BY "ci_runners"."created_at" DESC, "ci_runners"."id" DESC LIMIT 100 /*application:web,correlation_id:b2f5c7cf-fb2f-420a-b0c9-71596c74a04d,endpoint_id:GraphqlController#execute,line:/lib/gitlab/graphql/pagination/keyset/connection.rb:108:in `nodes'*/
↳ lib/gitlab/graphql/pagination/keyset/connection.rb:108:in `nodes'
Possible fixes
Only execute @runners.with_tags if tags have been requested.