You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Anton Vinogradov (Jira)" <ji...@apache.org> on 2026/06/30 10:17:00 UTC
[jira] [Created] (IGNITE-28841) Codestyle check still flaky after IGNITE-28840: drop -T 1C, the concurrent in-process javac races the annotation processors
Anton Vinogradov created IGNITE-28841:
-----------------------------------------
Summary: 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
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)