Unions that list each other fail with a StackOverflowError
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 55/100
Rechercherichtung
Start by reading SchemaParser#getLeafUnionObjects and trace how nested union members are expanded; the issue identifies the recursive expansion as the source of the StackOverflowError. Reproduce with the mutual and self-referencing schemas shown in the issue, including a field that returns the inner union. Done when those schemas no longer overflow and the invalid union membership is handled consistently with the chosen behavior.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Two unions that list each other fail the schema build with a StackOverflowError:
type Query {
results: [Result!]!
}
union Result = Book | Media
union Media = Movie | Result
Same for a union that lists itself (union Result = Book | Result).
SchemaParser#getLeafUnionObjects expands nested unions recursively and doesn't keep track of the ones it already expanded. On master this only happens when some field returns the inner union, or for the self-member case. Otherwise the scanner fails first with "No object type found". After #866 the scanner gets past that, so the first schema above overflows too.
The spec doesn't allow unions as members at all, so I think either flattening each union once (both would be Book | Movie) or failing with an error that names the unions is fine. Probably the error, since nobody asked for cycles.
- Vorherrschende Sprache
- Kotlin
- Sterne
- 824
- Forks
- 175
- Ø Merge
- 2 T. 5 Std.
- Gemergte PRs (30 T.)
- 52
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus graphql-java-kickstart/graphql-java-tools
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
graphql-java-kickstart/graphql-java-tools#893 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 74/100
graphql-java-kickstart/graphql-java-tools#896 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 72/100
graphql-java-kickstart/graphql-java-tools#889 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Reject directives applied at the wrong location, without a required argument or twice in 15.0.0Offenenhancement
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 72/100
graphql-java-kickstart/graphql-java-tools#884 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
graphql-java-kickstart/graphql-java-tools#881 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in graphql-java-kickstart/graphql-java-tools
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
commons-app/apps-android-commons#7072 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug ci good first issue help wanted severity: medium
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
dhananjay-nautiyal/music#17 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Watch Next: last engagement time is in seconds for played items and in milliseconds for the othersOffen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 79/100
damontecres/Wholphin#2112 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
beppe2880/opencode-mobile#60 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 72/100