Stackoverflow error with cyclic references involving allOf
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 42/100
Hướng nghiên cứu
Tái hiện lỗi với schema được cung cấp và openapi-diff spec.yaml spec.yaml. Theo dõi các lời gọi đệ quy qua SchemaDiff, ReferenceDiffCache, ComposedSchemaDiffResult và ArraySchemaDiffResult, sử dụng stack trace làm điểm bắt đầu. Hoàn thành khi việc so sánh schema allOf đệ quy kết thúc mà không có StackOverflowError.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Java
- Star
- 1.1k
- Fork
- 191
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của OpenAPITools/openapi-diff
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
OpenAPITools/openapi-diff#506 ·
-
good first issue help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
OpenAPITools/openapi-diff#364 ·
-
Property `type` change on referenced component schema is silently ignoredCó thể đã có người làm @Inf1mum đã nhận 2 ngày trước. Đang mởbug OpenAP 3.1.0 Support
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
OpenAPITools/openapi-diff#910 · 1 bình luận ·
-
Changes reported in operations but only securityScheme changedCó thể đã có người làm @Inf1mum đã nhận 5 ngày trước. Đang mởRender capabilities
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
OpenAPITools/openapi-diff#893 · 2 bình luận ·
-
[Bug] Backward compatibility check fails on reordered discriminator mappingsCó thể đã có người làm @MoChiUaena đã nhận 47 ngày trước. Đang mởBreaking/Non-Breaking classification
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
OpenAPITools/openapi-diff#886 ·
Tất cả issue của OpenAPITools/openapi-diff
Issue tương tự
-
bug emitter:client:csharp
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
microsoft/typespec#12572 · 1 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
GCC 15.2: -Wcast-qual warning - cast discards const qualifier from pointer target type (H5trace.c)Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 73/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] RemotingHelper.connect swaps the socket send and receive buffer configurationCó thể đã có người làm @amalsaidov đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
needs-area-label
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 2 ngày
-
area/ai area/backend component/zeebe kind/task
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày