fix(federation): misc fixes#5766
Conversation
|
CI performance tests
|
dc9adcc to
f928269
Compare
b982516 to
5a3b1f8
Compare
There was a problem hiding this comment.
This will probably be slow when a fetch dependency node has very many children. Children are added one by one, so if this function is O(n), the complexity of adding many children is O(n^2). This is already a problem with add_parent and technically also with this loop, it will just be more pronounced if we also sort the children over and over.
I think it's okay if we do this here now, but we will have to improve the behaviour for nodes with many children in the near future.
There was a problem hiding this comment.
Realistically this will be at most in the order of hundreds of nodes (maybe couple thousand?) so don't think this will have much impact but yeah something to keep in mind.
There was a problem hiding this comment.
We already have a query where we spend multiple seconds in add_parent because of this 😄
5a3b1f8 to
505a331
Compare
duckki
left a comment
There was a problem hiding this comment.
It looks good to me. I'm running corpus for comparison.
Co-authored-by: Duckki Oe <duckki.dev@gmail.com>
duckki
left a comment
There was a problem hiding this comment.
Corpus comparison result looks good. No new issues found.
Fixes
SubgraphEnteringTransitionwhich should skipRootTypeResolutionedges. This fixes the issue with redundantly processing same edges over and over again.KeyResolutionwhich should compare whole selection sets of the conditions vs just the selections.self.on_modification()when removing redundant edgesNone)PlanBuildertrait to no longer swallow exceptions from query planningChecklist
Complete the checklist (and note appropriate exceptions) before the PR is marked ready-for-review.
Exceptions
Note any exceptions here
Notes
Footnotes
It may be appropriate to bring upcoming changes to the attention of other (impacted) groups. Please endeavour to do this before seeking PR approval. The mechanism for doing this will vary considerably, so use your judgement as to how and when to do this. ↩
Configuration is an important part of many changes. Where applicable please try to document configuration examples. ↩
Tick whichever testing boxes are applicable. If you are adding Manual Tests, please document the manual testing (extensively) in the Exceptions. ↩