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)