[ 
https://issues.apache.org/jira/browse/IGNITE-28841?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anton Vinogradov resolved IGNITE-28841.
---------------------------------------
    Resolution: Fixed

> Codestyle check still flaky after IGNITE-28840: drop -T 1C, the concurrent 
> in-process javac races the annotation processors
> ---------------------------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-28841
>                 URL: https://issues.apache.org/jira/browse/IGNITE-28841
>             Project: Ignite
>          Issue Type: Task
>            Reporter: Anton Vinogradov
>            Assignee: Anton Vinogradov
>            Priority: Major
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> h3. Problem
> IGNITE-28840 tried to fix the intermittent codestyle \{{test-compile}} 
> failure by adding \{{-Dmaven.compiler.useIncrementalCompilation=false}}, but 
> the job still fails the same way:
> {code}
> [ERROR] IgniteKernal.java:[176,45] cannot find symbol
>   symbol:   class ConfigurationViewWalker
>   location: package org.apache.ignite.internal.systemview
> [ERROR] IgniteDataTransferObject.java:[27,47] package 
> org.apache.ignite.internal.codegen.idto does not exist
> {code}
> Example with the IGNITE-28840 flag already applied: run 28435576909 (PR 
> #13298).
> h3. Root cause
> The trigger is \{{-T 1C}}, introduced in IGNITE-28823, not incremental 
> compilation.
> {\{maven-compiler-plugin}} runs the compiler in-process (\{{fork}} is not 
> enabled), so javac executes inside the Maven JVM. The \{{ignite-core}} 
> annotation processors — \{{MessageProcessor}}, 
> \{{SystemViewRowAttributeWalkerProcessor}}, 
> \{{IgniteDataTransferObjectProcessor}} — reach into \{{com.sun.tools.javac}} 
> internals (that is why MAVEN_OPTS and the surefire argLine open 
> \{{jdk.compiler/com.sun.tools.javac.*}}).
> Under \{{-T 1C}} several reactor modules compile concurrently in that single 
> JVM. The shared in-process javac / \{{com.sun.tools.javac}} machinery is not 
> thread-safe, so generation of the Walker / Factory sources for 
> \{{ignite-core}} is intermittently dropped while the files referencing them 
> are compiled — hence "cannot find symbol". Single-threaded there is no 
> concurrent compilation and the issue does not occur.
> Forking the compiler is not viable here: a forked javac would not inherit the 
> \{{--add-opens=jdk.compiler/...}} that MAVEN_OPTS grants the in-process 
> compiler, breaking the processors outright.
> h3. Change
> Run the codestyle / \{{test-compile}} step single-threaded again (drop \{{-T 
> 1C}}) and remove the ineffective 
> \{{-Dmaven.compiler.useIncrementalCompilation=false}} from this step. The 
> primary IGNITE-28823 win (no second full reactor recompile on the 
> abandoned-tests step) is untouched.
> h3. Verification
> Re-run the codestyle job several times after the change; without \{{-T 1C}} 
> the concurrent-compilation race is gone.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to