XianReallyHot-ZZH opened a new pull request, #13732:
URL: https://github.com/apache/ignite/pull/13732

   Ticket: IGNITE-29184
   
   ## What changes
   
   Since JDK 23, javac no longer runs annotation processors found on the 
classpath unless they are configured explicitly. The calcite, indexing, 
zookeeper and control-utility modules relied on this implicit discovery, so on 
JDK 23+ their builds pass but message serializers / DTO factories are not 
generated and the node fails at runtime.
   
   This lists the processors each module needs explicitly, configured in 
`pluginManagement` so the inherited `maven-compiler-plugin` picks the list up:
   
   * `calcite`: `MessageProcessor` (message and metadata 
serializers/marshallers) **and `org.immutables.processor.ProxyProcessor`** 
(generates the 14 `Immutable*` rules and `ImmutableIgniteSqlValidator`) — 
listing only the Ignite processor would trade one silent generation gap for 
another;
   * `indexing`: `MessageProcessor`;
   * `zookeeper`: `MessageProcessor`;
   * `control-utility`: `IgniteDataTransferObjectProcessor` (management API DTO 
factories; also covers test sources, which declare `@Argument` DTOs of their 
own).
   
   `ignite-core` already lists its processors explicitly (in `build/plugins`). 
The four modules here use `pluginManagement` instead of `build/plugins` because 
declaring `maven-compiler-plugin` in a module's `build/plugins` makes Maven 
reorder the module's initialize-phase executions: in calcite, 
`generate-fmpp-sources` gets scheduled ahead of 
`copy-fmpp-resources`/`unpack-parser-template`, and the fmpp → javacc parser 
pipeline fails. Configuring through `pluginManagement` applies the processor 
list to the inherited plugin without touching plugin ordering.
   
   ## Testing
   
   For each module, clean build before/after the change on JDK 21, comparing 
the full set of generated files:
   
   * calcite: 34 files identical (15 message + 5 metadata 
serializers/marshallers, 14 immutables classes);
   * indexing: 33 files identical;
   * zookeeper: 8 files identical;
   * control-utility: 2 test-source factories generated (`test-compile`).
   
   With an explicit processor list, annotation processing no longer depends on 
the JDK's discovery default, so JDK ≤ 21 behavior is unchanged and JDK 23+ 
keeps generating. Note: `control-utility` `test-compile` needs a current 
`ignite-core` snapshot (IGNITE-29050 added `SnapshotDeleteCommand`); verified 
green in a reactor build with `-am`.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to