Hi all, I would like to share our work on tracking network message changes in Ignite 2 and discuss the next steps.
Changes to network messages can affect rolling upgrade compatibility (see IEP-132 [1]). We want to help contributors and reviewers notice these changes during PR review. First, we added generated JSON files that describe message formats and message ID registrations [2]. These files focus on information needed for compatibility review. Their diff is easier to analyze than a Java diff, which can also show changes to comments, formatting and unrelated code. Github CI checks that the JSON files match the code. The goal was to show format changes in the PR diff. However, contributors need to generate these files with `./mvnw clean process-classes -pl modules/wire-compatibility-check -am` and commit them whenever the descriptions change. This adds extra work. If they update the JSON only after CI fails, reviewers may see the format changes after the main code review. Another option is to create a bot that would generate and commit JSON updates for contributors. However, this requires write access to PR branches, which raises security concerns, especially for PRs from forks. It also requires a more complex setup. For now, I suggest removing the generated JSON files from the repository and generating and comparing them in a GitHub Actions CI workflow instead. The generated files would be placed in the target/ directory. For each PR, CI would publish the diff in the GitHub Actions job summary. The compatibility label would depend only on the JSON diff, replacing the current check based on Java file changes. After a successful check of the latest PR commit, CI would add the label if there is a diff and remove it if there is none This way, contributors would not need to commit JSON files, and we could remove the existing generated JSON files from the project. Please share your thoughts or concerns about this approach. Let me know if you would like more details. Best regards, Aleksandr Chesnokov [1] https://cwiki.apache.org/confluence/display/IGNITE/IEP-132+Rolling+Upgrade [2] https://github.com/apache/ignite/tree/f9d138d6a158347e1f4954c8a91f634439886828/modules/wire-compatibility-check/wire
