Anton Vinogradov created IGNITE-28840:
-----------------------------------------
Summary: Codestyle GitHub Actions job is flaky: ignite-core
test-compile fails with "cannot find symbol" for annotation-processor-generated
classes under -T 1C
Key: IGNITE-28840
URL: https://issues.apache.org/jira/browse/IGNITE-28840
Project: Ignite
Issue Type: Task
Reporter: Anton Vinogradov
Assignee: Anton Vinogradov
h3. Problem
After IGNITE-28823 (#13281) parallelized the codestyle step of commit-check.yml
with \{{-T 1C}}, the "Check java code on JDK 17 / Run codestyle and licenses
checks" job fails intermittently during \{{ignite-core}} \{{test-compile}}:
{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}
The missing symbols (\{{*ViewWalker}}, \{{IDTOSerializerFactory}}) are sources
produced by annotation processors (\{{SystemViewRowAttributeWalkerProcessor}},
\{{IgniteDataTransferObjectProcessor}}). Most runs pass, some fail — e.g. run
28431196455 (PR #13298).
h3. Root cause
{\{maven-compiler-plugin}} runs with incremental compilation enabled by
default. Under the parallel reactor (\{{-T 1C}}) it detects a changed reactor
dependency and performs a partial recompile of \{{ignite-core}}: the annotation
processors run only over the stale subset, so the generated Walker/Factory
classes are not regenerated, while the files referencing them are recompiled —
hence "cannot find symbol". Single-threaded the recompile set is consistent, so
the issue did not surface before IGNITE-28823.
The same incremental-compilation pitfall was already worked around for the
"abandoned tests" step in IGNITE-28823 via
\{{-Dmaven.compiler.useIncrementalCompilation=false}}; the codestyle step was
left on incremental compilation.
h3. Fix
Add \{{-Dmaven.compiler.useIncrementalCompilation=false}} to the codestyle /
\{{test-compile}} step in \{{commit-check.yml}}, forcing a full compile so
annotation processors always regenerate all sources. The \{{-T 1C}} speed-up is
preserved.
h3. Verification
Re-run the codestyle job several times (or push a no-op commit a few times) to
confirm the flakiness is gone — without the fix it reproduces in a minority of
runs.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)