Stackoverflow error with cyclic references involving allOf
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 42/100
Rechercherichtung
Reproduziere den Fehler mit dem bereitgestellten Schema und openapi-diff spec.yaml spec.yaml. Verfolge die rekursiven Aufrufe durch SchemaDiff, ReferenceDiffCache, ComposedSchemaDiffResult und ArraySchemaDiffResult, wobei der Stacktrace als Einstiegspunkt dient. Als abgeschlossen gilt die Aufgabe, wenn der rekursive allOf-Schemavergleich ohne einen StackOverflowError abgeschlossen wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Given this schema definition
openapi: 3.0.1
info:
title: recursive test
version: '1.0'
servers:
- url: 'http://localhost:8000/'
paths:
/ping:
get:
operationId: ping
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/B'
components:
schemas:
B:
type: object
properties:
message:
type: string
message2:
type: string
details:
type: array
items:
allOf:
- $ref: '#/components/schemas/B'
and running openapi-diff spec.yaml spec.yaml I get stack overflow error
Exception in thread "main" java.lang.StackOverflowError
at java.base/java.util.Arrays.spliterator(Arrays.java:5482)
at java.base/java.util.Arrays.stream(Arrays.java:5633)
at java.base/java.util.Arrays.stream(Arrays.java:5614)
at java.base/java.util.stream.Stream.of(Stream.java:1188)
at com.qdesrame.openapi.diff.model.ChangedExtensions.getChangedElements(ChangedExtensions.java:37)
at com.qdesrame.openapi.diff.model.ComposedChanged.isChanged(ComposedChanged.java:19)
at com.qdesrame.openapi.diff.model.Changed.isUnchanged(Changed.java:21)
at com.qdesrame.openapi.diff.utils.ChangedUtils.isUnchanged(ChangedUtils.java:9)
at com.qdesrame.openapi.diff.utils.ChangedUtils.isChanged(ChangedUtils.java:17)
at com.qdesrame.openapi.diff.compare.ExtensionsDiff.diff(ExtensionsDiff.java:79)
at com.qdesrame.openapi.diff.compare.schemadiffresult.SchemaDiffResult.diff(SchemaDiffResult.java:61)
at com.qdesrame.openapi.diff.compare.SchemaDiff.computeDiff(SchemaDiff.java:316)
at com.qdesrame.openapi.diff.compare.SchemaDiff.computeDiff(SchemaDiff.java:27)
at com.qdesrame.openapi.diff.compare.ReferenceDiffCache.cachedDiff(ReferenceDiffCache.java:51)
at com.qdesrame.openapi.diff.compare.SchemaDiff.diff(SchemaDiff.java:282)
at com.qdesrame.openapi.diff.compare.schemadiffresult.SchemaDiffResult.diff(SchemaDiffResult.java:75)
at com.qdesrame.openapi.diff.compare.schemadiffresult.ComposedSchemaDiffResult.diff(ComposedSchemaDiffResult.java:85)
at com.qdesrame.openapi.diff.compare.SchemaDiff.computeDiff(SchemaDiff.java:316)
at com.qdesrame.openapi.diff.compare.SchemaDiff.computeDiff(SchemaDiff.java:27)
at com.qdesrame.openapi.diff.compare.ReferenceDiffCache.cachedDiff(ReferenceDiffCache.java:51)
at com.qdesrame.openapi.diff.compare.SchemaDiff.diff(SchemaDiff.java:282)
at com.qdesrame.openapi.diff.compare.schemadiffresult.ArraySchemaDiffResult.diff(ArraySchemaDiffResult.java:31)
The problem occurs only with allOf. Replacing it with oneOf fixes the problem.
- Vorherrschende Sprache
- Java
- Sterne
- 1.1k
- Forks
- 191
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
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 OpenAPITools/openapi-diff
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
OpenAPITools/openapi-diff#506 ·
-
good first issue help wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
OpenAPITools/openapi-diff#364 ·
-
Property `type` change on referenced component schema is silently ignoredEvtl. vergeben @Inf1mum hat das vor 2 Tagen übernommen. Offenbug OpenAP 3.1.0 Support
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 68/100
OpenAPITools/openapi-diff#910 · 1 Kommentar ·
-
Changes reported in operations but only securityScheme changedEvtl. vergeben @Inf1mum hat das vor 5 Tagen übernommen. OffenRender capabilities
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
OpenAPITools/openapi-diff#893 · 2 Kommentare ·
-
[Bug] Backward compatibility check fails on reordered discriminator mappingsEvtl. vergeben @MoChiUaena hat das vor 47 Tagen übernommen. OffenBreaking/Non-Breaking classification
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
OpenAPITools/openapi-diff#886 ·
Alle Issues in OpenAPITools/openapi-diff
Ähnliche Issues
-
bug emitter:client:csharp
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
microsoft/typespec#12572 · 1 Kommentar · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
GCC 15.2: -Wcast-qual warning - cast discards const qualifier from pointer target type (H5trace.c)Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
Maintainer antworten meist innerhalb von 1 Tag
-
[Bug] RemotingHelper.connect swaps the socket send and receive buffer configurationEvtl. vergeben @amalsaidov hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag
-
needs-area-label
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 2 Tagen
-
area/ai area/backend component/zeebe kind/task
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag