Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

defer stream support within stitching #1941

Open
wants to merge 49 commits into
base: master
Choose a base branch
from
Open

defer stream support within stitching #1941

wants to merge 49 commits into from

Conversation

yaacovCR
Copy link
Collaborator

@yaacovCR yaacovCR commented Aug 25, 2020

A work in progress...

Help wanted...

  • test single proxied deferred patch.
  • test merging deferred patches from multiple subschemas
  • handle stream

In terms of mechanism, have settled on external values that are from asyncIterables being converted to an initial result with an associated Receiver object, which is passed down the execution tree. If a field is not present on the result, and a Receiver can be found, the default merging resolver will request to be notified when the field is available.

  • think more broadly about how to implement the Receiver, maybe we should use Repeaters rather than raw async iterables, and what the best pattern is for consuming async iterables.... see Not that great for implementing transducers? repeaterjs/repeater#48 (comment)

  • update all transforms that touch results - some result transformers parse the request and transform the response based on saved state -- these transformers may require rewriting patch labels so that state does not overlap between different fragments...

    • CheckResultAndHandleErrors (merging errors into results) - replaced by externalValueFromResult and externalValueFromPatchResult functions
    • TransformQuery
    • MapLeafValues
    • RenameRootTypes
    • RenameTypes
    • TransformCompositeFields
    • WrapFields
    • HoistFields
  • update batch-execute

  • update batch-delegate

  • test errors

  • test timeouts

graphql/graphql-js#2319
graphql/graphql-spec#742

@yaacovCR yaacovCR changed the base branch from v7 to master August 26, 2020 20:57
@yaacovCR yaacovCR closed this Aug 26, 2020
@yaacovCR yaacovCR reopened this Aug 26, 2020
@yaacovCR yaacovCR changed the base branch from master to v7 August 26, 2020 21:34
@yaacovCR yaacovCR closed this Aug 26, 2020
@yaacovCR yaacovCR reopened this Aug 26, 2020
@yaacovCR yaacovCR closed this Aug 26, 2020
@yaacovCR yaacovCR reopened this Aug 26, 2020
@yaacovCR yaacovCR changed the title enable defer stream across schema creation defer stream support Aug 27, 2020
Base automatically changed from v7 to master October 23, 2020 05:09
@sshevlyagin
Copy link

So... is this done? #4796 :D

@yaacovCR yaacovCR changed the title defer stream support defer stream support within stitching Nov 10, 2022
@yaacovCR
Copy link
Collaborator Author

Not yet :( still can't stitch

@maxbol
Copy link
Contributor

maxbol commented Jan 5, 2023

Hi @yaacovCR ! Do you know if this will solve other async/persistent connections, like @n1ru4l 's live query pattern, in stitched schemas?

I would love to assist with this goal in any way possible!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants