Commit Graph

19 Commits

Author SHA1 Message Date
GitLab Bot f098e6d3d2 Add latest changes from gitlab-org/gitlab@master 2020-04-06 03:09:23 +00:00
GitLab Bot ae4ef81757 Add latest changes from gitlab-org/gitlab@master 2020-03-20 18:09:31 +00:00
GitLab Bot 196ada0844 Add latest changes from gitlab-org/gitlab@master 2020-03-20 09:09:22 +00:00
GitLab Bot 4fe93274de Add latest changes from gitlab-org/gitlab@master 2020-03-04 00:07:52 +00:00
GitLab Bot 66d4203791 Add latest changes from gitlab-org/gitlab@master 2020-02-26 09:08:47 +00:00
GitLab Bot c8f773a859 Add latest changes from gitlab-org/gitlab@master 2020-01-30 21:08:47 +00:00
charlieablett 675c9b9f6b Address reviewer comments
- Remove Gitaly call check for fields that have a constant complexity
declared
- Add associated test
2019-07-05 10:18:50 +12:00
charlieablett cf1b0d10bc Address reviewer comments
- Add 1 for all fields that call Gitaly (with resolvers or without)
- Clarify comment regarding Gitaly call alert
- Expose predicate `calls_gitaly?` instead of ivar
2019-07-03 22:53:13 +12:00
charlieablett a11fe5de44 Wrap proc properly in gitaly call counts
- Add `calls_gitaly: true` to some fields missing (hey, it works!)
- Clarify proc wrapping
- Add kwargs argument to `mount_mutation`
2019-07-03 22:53:13 +12:00
charlieablett f4890d9078 Alert if `calls_gitaly` declaration missing
- Move `calls_gitaly_check` to public
- Add instrumentation for flagging missing CallsGitaly declarations
- Wrap resolver proc in before-and-after Gitaly counts to get the net
Gitaly call count for the resolver.
2019-07-03 22:53:13 +12:00
charlieablett c99c30fdd6 Remove potentially noisy warning
- If Gitaly calls are missing, it could be due to a conditional and
may just become noise
2019-07-03 22:53:13 +12:00
charlieablett 8b809837f4 Enumerate fields with Gitaly calls
- Add a complexity of 1 if Gitaly is called at least once
 - Add an error notification if `calls_gitaly` isn't right for a
 particular field
2019-07-03 22:53:13 +12:00
Brett Walker 0cedd43ef7 Grab field_defn to access certain values 2019-06-05 10:17:54 -05:00
Brett Walker 95b3fe2863 Use :complexity_multiplier only with connections
This helps reduce complexity for non-connections
2019-06-05 10:17:54 -05:00
Brett Walker 1285b00517 Added common fields to the IssueType
and allow passing of child_complexity to the
'resolver_complexity' metho
2019-05-31 13:19:29 -05:00
Jan Provaznik 5ee7884d91 GraphQL - Add extra complexity for resolvers
If a field is a resolver, its complexity is automatically
increased. By default we add extra points for sort and search
arguments (which will be common for various resolvers).

For specific resolvers we add field-specific complexity, e.g.
for Issues complexity is increased if we filter issues by `labelName`
(because then SQL query is more complex). We may want to tune these
values in future depending on real-life results.

Complexity is also dependent on the number of loaded nodes, but only
if we don't search by specific ID(s). Also added complexity is limited
(by default only twice more than child complexity) - the reason is
that although it's more complex to process more items, the complexity
increase is not linear (there is not so much difference between loading
10, 20 or 100 records from DB).
2019-05-06 21:24:19 +00:00
Brett Walker f458c56107 Initial field and query complexity limits
It makes all Types::BaseField default to a complexity of 1.

Queries themselves now have limited complexity, scaled
to the type of user: no user, authenticated user, or an
admin user.
2019-04-04 08:39:30 -05:00
gfyoung 47b3038434 Enable frozen string in app/graphql + app/finders
Partially addresses #47424.
2018-09-11 12:15:23 -07:00
Bob Van Landuyt 9b65d4bb41 Initial setup GraphQL using graphql-ruby 1.8
- All definitions have been replaced by classes:
  http://graphql-ruby.org/schema/class_based_api.html
- Authorization & Presentation have been refactored to work in the
  class based system
- Loaders have been replaced by resolvers
- Times are now coersed as ISO 8601
2018-06-06 10:58:54 +02:00