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

Reply via email to