[
https://issues.apache.org/jira/browse/FLINK-40958?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martijn Visser reopened FLINK-40958:
------------------------------------
Reopening, the test that b245479247 added overflows the stack in the variant
builder. Five runs on master since the fix, on JDK 11 and 17:
https://github.com/apache/flink/actions/runs/37873514851/job/113641514554
(nightly 2026-10-09, Java 11)
https://github.com/apache/flink/actions/runs/38195297880/job/114640145657
(nightly 2026-10-12, AdaptiveScheduler, JDK 17)
https://github.com/apache/flink/actions/runs/38336045675/job/115100741768
(nightly 2026-10-13, Java 11)
https://github.com/apache/flink/actions/runs/38697867883/job/116304192065 (push
2026-10-15, Java 17)
https://github.com/apache/flink/actions/runs/39188314691/job/117859063002
(nightly 2026-10-19, Java 11)
{code}
[ERROR]
org.apache.flink.types.variant.JsonVariantFormatterTest.testDeeplyNestedValueRenders
-- Time elapsed: 0.464 s <<< ERROR!
java.lang.StackOverflowError
at
org.apache.flink.types.variant.BinaryVariantInternalBuilder.shallowAppendVariantImpl(BinaryVariantInternalBuilder.java:670)
at
org.apache.flink.types.variant.BinaryVariantInternalBuilder.appendVariantImpl(BinaryVariantInternalBuilder.java:664)
at
org.apache.flink.types.variant.BinaryVariantInternalBuilder.lambda$appendVariantImpl$2(BinaryVariantInternalBuilder.java:657)
at
org.apache.flink.types.variant.BinaryVariantUtil.handleArray(BinaryVariantUtil.java:843)
{code}
The test builds its 5000 levels with {{BUILDER.array().add(nested).build()}},
which still recurses once per level. Other profiles of the same runs pass, so
whether it overflows depends on the JIT state. FLINK-40917 covers the builder
recursion.
> VARIANT might fail with StackOverflow
> -------------------------------------
>
> Key: FLINK-40958
> URL: https://issues.apache.org/jira/browse/FLINK-40958
> Project: Flink
> Issue Type: Improvement
> Components: API / Core
> Reporter: Sergey Nuyanzin
> Assignee: Sergey Nuyanzin
> Priority: Major
> Labels: pull-request-available
> Fix For: 2.4.0
>
>
> for instance for deep {{VARIANT}}s
> {noformat}
> RowDataToJsonConvertersTest.testVariantNestedBeyondJsonParserLimitAtCutEdgeIsIllegalUserInput:225
> 02:50
> Expecting actual throwable to be an instance of:02:50
> org.apache.flink.util.IllegalUserInputRuntimeException02:50
> but was:02:50
> java.lang.StackOverflowError02:50
> at
> org.apache.flink.types.variant.JsonVariantFormatter.lambda$appendNode$1(JsonVariantFormatter.java:118)02:50
> at
> org.apache.flink.types.variant.BinaryVariantUtil.handleArray(BinaryVariantUtil.java:843)02:50
> at
> org.apache.flink.types.variant.JsonVariantFormatter.appendNode(JsonVariantFormatter.java:114)02:50
> ...(1021 remaining lines not displayed - this can be changed with
> Assertions.setMaxStackTraceElementsDisplayed)
> {noformat}
> probably better to use loop
--
This message was sent by Atlassian Jira
(v8.20.10#820010)