• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

99designs / gqlgen / 35470548626
0%

Build:
DEFAULT BRANCH: master
Ran 19 Sep 2026 09:32PM UTC
Jobs 1
Files 0
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

19 Sep 2026 09:29PM UTC coverage: 0.0%. Remained the same
35470548626

push

github

web-flow
graphql: index input unmarshalers by GraphQL input name (#4334)

* graphql: build the input unmarshaler map on first use

Exec built the input-type unmarshaler map on every operation, even
though almost no request needs it. The map exists only so resolvers can
call graphql.UnmarshalInputFromContext, and nothing in the tree called
that. For a schema with 29 input types it cost roughly 3us, 5.8KB and 38
allocations per request, all of it discarded unread.

Defer the build instead. Exec now hands WithLazyUnmarshalerMap a closure
over its own execution context, and the map is built on the first call to
UnmarshalInputFromContext. WithLazyUnmarshalerMap applies sync.OnceValue
itself, so concurrent resolvers in one request share a single map and no
caller can forget the guard.

Measured on codegen/testserver/singlefile (29 input types), one trivial
query, runs interleaved between branches:

    before   10205 ns/op   16632 B/op   162 allocs/op
    after     7925 ns/op   13670 B/op   130 allocs/op

Hoisting the map to schema construction instead would save marginally
more, but it needs one executionContext shared by every request, with a
nil OperationContext and a nil deferred-results channel. A generated
unmarshaler that later read operation state would then nil-panic in
production only. Binding the map to the requesting operation's own
context rules that out, for a residual 3 allocations per request.

Fix UnmarshalInputFromContext under function syntax
---------------------------------------------------

use_function_syntax_for_execution_context generates unmarshalers as free
functions taking *executionContext, so that very large schemas stay under
Go's per-type method limit. UnmarshalInputFromContext invokes map entries
as func(context.Context, any), so those three-argument functions panicked
inside reflect with "Call with too few input arguments". Resolver recovery
turned that into an opaque internal error, and because nothing called
UnmarshalInputFromCon... (continued)

0 of 0 relevant lines covered (NaN%)

0.0 hits per line

Jobs
ID Job ID Ran Files Coverage
1 35470548626.1 19 Sep 2026 09:32PM UTC 0
0.0
GitHub Action Run
Source Files on build 35470548626
Detailed source file information is not available for this build.
  • Back to Repo
  • 2946e12f on github
  • Prev Build on master (#35136891423)
  • Next Build on master (#35599902883)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc