[ 
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)

Reply via email to