Note: It shouldn't currently be possible to trigger this edge case! However, I can't predict whether the code will change and cause us to create a case for this in the future, so changing this is the safest course of action.
When a field, hypothetically speaking, flips info.partial = true, but a parent field aborts with a cache miss, and a parent field then recovers by setting the value to null, then info.partial won't be reset to its prior value, which could've been false.
Set of changes
Restore ctx.partial to initial value in readSelection loop on early return
Restore ctx.partial to initial alue in readResolverResult's and readLink's array loop in early return case
Summary
Note: It shouldn't currently be possible to trigger this edge case! However, I can't predict whether the code will change and cause us to create a case for this in the future, so changing this is the safest course of action.
When a field, hypothetically speaking, flips
info.partial = true
, but a parent field aborts with a cache miss, and a parent field then recovers by setting the value tonull
, theninfo.partial
won't be reset to its prior value, which could've beenfalse
.Set of changes
ctx.partial
to initial value inreadSelection
loop on early returnctx.partial
to initial alue inreadResolverResult
's andreadLink
's array loop in early return case