[
https://issues.apache.org/jira/browse/IGNITE-25489?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Aleksandr Chesnokov updated IGNITE-25489:
-----------------------------------------
Description:
To maintain RU compatibility we have to review new PRs carefully and control
wire changes.
Reviewers should see wire format changes in PRs to {{master}} before merge. For
now we have only check that assigns label compatibility if we have any change
in java class that contains Order annotation. The problem is that such check is
noisy and not accurate. For instance, it also triggers for new comments or
codestyle changes and the check does not trigger on changing messageId in
CoreMessagesProvider
Let's generate JSON representation of messages with RU-related info: the
fields, their types and order, enum values and message IDs that reviewers need
to compare. Same representations for idto and message ids. CI will generate the
representations for PR and master and will publish the diff of json files in
GitHub Job Summary to signal a reviewer to look the changes twice from point of
RU.
h3. What is in place
* IGNITE-29103 generates descriptions of messages and enums. [PR
#13675|https://github.com/apache/ignite/pull/13675]
* IGNITE-29143 tracks the JSON in Git and checks that it is up to date. [PR
#13693|https://github.com/apache/ignite/pull/13693]
* IGNITE-29146 adds IDTO descriptions. [PR
#13730|https://github.com/apache/ignite/pull/13730]
* IGNITE-29144 records the mapping from message IDs to classes in
{{{}ids.json{}}}. [PR #13763|https://github.com/apache/ignite/pull/13763]
h3. Deliver in this order
# *IGNITE-29261 generates and compares JSON in CI.* Remove the generated files
from Git. CI compares the target branch snapshot with GitHub's test merge of
the PR. It saves the full diff as an artifact. The comparison works on target
branches that have the required generators. [PR
#13802|https://github.com/apache/ignite/pull/13802]
# *IGNITE-29145 reports the result on the PR.* After IGNITE-29261 merges, a
trusted {{workflow_run}} workflow reads the comparison and completeness
results. It updates the bot comment and the label for the current PR head.
h3. Done when
On a PR to {{{}master{}}}, including a fork PR, CI shows the diff in Job
Summary. The {{check-wire}} job warns when the format changes. A build or
comparison error fails the check. When the comparison and JSON completeness
check pass and there is a diff, the bot adds {{{}compatibility{}}}. It posts or
updates one comment linking to Job Summary.
Reviewers use the diff to decide what needs a closer look. They still need
compatibility tests and manual review, especially for changes to hand-written
serialization.
h3. Later work
* IGNITE-29289 tests whether a hint can reach committers before CI approval on
a fork PR.
* IGNITE-29230 explores rules for explaining compatibility changes from
generated descriptions.
* IGNITE-29161 evaluates whether a code hash can help reviewers spot changes
to serialization code.
[Ignite dev-list
discussion|https://lists.apache.org/thread.html/hq3d8opxscww09pobvqfvwgc1d0v9cls]
was:
Reviewers should see wire format changes in PRs to {{master}} before merge.
Contributors should only need to commit their source changes. A Java-text check
can flag formatting and miss changes to message IDs. JSON describes the fields,
their types and order, enum values and message IDs that reviewers need to
compare.
h3. What is in place
* IGNITE-29103 generates descriptions of messages and enums. [PR
#13675|https://github.com/apache/ignite/pull/13675]
* IGNITE-29143 tracks the JSON in Git and checks that it is up to date. [PR
#13693|https://github.com/apache/ignite/pull/13693]
* IGNITE-29146 adds IDTO descriptions. [PR
#13730|https://github.com/apache/ignite/pull/13730]
* IGNITE-29144 records the mapping from message IDs to classes in {{ids.json}}.
[PR #13763|https://github.com/apache/ignite/pull/13763]
h3. Deliver in this order
# *IGNITE-29261 generates and compares JSON in CI.* Remove the generated files
from Git. CI compares the target branch snapshot with GitHub's test merge of
the PR. It saves the full diff as an artifact. The comparison works on target
branches that have the required generators. [PR
#13802|https://github.com/apache/ignite/pull/13802]
# *IGNITE-29145 reports the result on the PR.* After IGNITE-29261 merges, a
trusted {{workflow_run}} workflow reads the comparison and completeness
results. It updates the bot comment and the label for the current PR head.
h3. Done when
On a PR to {{master}}, including a fork PR, CI shows the diff in Job Summary.
The {{check-wire}} job warns when the format changes. A build or comparison
error fails the check. When the comparison and JSON completeness check pass and
there is a diff, the bot adds {{compatibility}}. It posts or updates one
comment linking to Job Summary.
Reviewers use the diff to decide what needs a closer look. They still need
compatibility tests and manual review, especially for changes to hand-written
serialization.
h3. Later work
* IGNITE-29289 tests whether a hint can reach committers before CI approval on
a fork PR.
* IGNITE-29230 explores rules for explaining compatibility changes from
generated descriptions.
* IGNITE-29161 evaluates whether a code hash can help reviewers spot changes to
serialization code.
[Ignite dev-list
discussion|https://lists.apache.org/thread.html/hq3d8opxscww09pobvqfvwgc1d0v9cls]
> [Umbrella] Track wire format changes for rolling upgrade compatibility
> ----------------------------------------------------------------------
>
> Key: IGNITE-25489
> URL: https://issues.apache.org/jira/browse/IGNITE-25489
> Project: Ignite
> Issue Type: Improvement
> Reporter: Maksim Timonin
> Assignee: Aleksandr Chesnokov
> Priority: Major
> Labels: IEP-132, ise
> Time Spent: 1h 20m
> Remaining Estimate: 0h
>
> To maintain RU compatibility we have to review new PRs carefully and control
> wire changes.
> Reviewers should see wire format changes in PRs to {{master}} before merge.
> For now we have only check that assigns label compatibility if we have any
> change in java class that contains Order annotation. The problem is that such
> check is noisy and not accurate. For instance, it also triggers for new
> comments or codestyle changes and the check does not trigger on changing
> messageId in CoreMessagesProvider
>
> Let's generate JSON representation of messages with RU-related info: the
> fields, their types and order, enum values and message IDs that reviewers
> need to compare. Same representations for idto and message ids. CI will
> generate the representations for PR and master and will publish the diff of
> json files in GitHub Job Summary to signal a reviewer to look the changes
> twice from point of RU.
> h3. What is in place
> * IGNITE-29103 generates descriptions of messages and enums. [PR
> #13675|https://github.com/apache/ignite/pull/13675]
> * IGNITE-29143 tracks the JSON in Git and checks that it is up to date. [PR
> #13693|https://github.com/apache/ignite/pull/13693]
> * IGNITE-29146 adds IDTO descriptions. [PR
> #13730|https://github.com/apache/ignite/pull/13730]
> * IGNITE-29144 records the mapping from message IDs to classes in
> {{{}ids.json{}}}. [PR #13763|https://github.com/apache/ignite/pull/13763]
> h3. Deliver in this order
> # *IGNITE-29261 generates and compares JSON in CI.* Remove the generated
> files from Git. CI compares the target branch snapshot with GitHub's test
> merge of the PR. It saves the full diff as an artifact. The comparison works
> on target branches that have the required generators. [PR
> #13802|https://github.com/apache/ignite/pull/13802]
> # *IGNITE-29145 reports the result on the PR.* After IGNITE-29261 merges, a
> trusted {{workflow_run}} workflow reads the comparison and completeness
> results. It updates the bot comment and the label for the current PR head.
> h3. Done when
> On a PR to {{{}master{}}}, including a fork PR, CI shows the diff in Job
> Summary. The {{check-wire}} job warns when the format changes. A build or
> comparison error fails the check. When the comparison and JSON completeness
> check pass and there is a diff, the bot adds {{{}compatibility{}}}. It posts
> or updates one comment linking to Job Summary.
> Reviewers use the diff to decide what needs a closer look. They still need
> compatibility tests and manual review, especially for changes to hand-written
> serialization.
> h3. Later work
> * IGNITE-29289 tests whether a hint can reach committers before CI approval
> on a fork PR.
> * IGNITE-29230 explores rules for explaining compatibility changes from
> generated descriptions.
> * IGNITE-29161 evaluates whether a code hash can help reviewers spot changes
> to serialization code.
> [Ignite dev-list
> discussion|https://lists.apache.org/thread.html/hq3d8opxscww09pobvqfvwgc1d0v9cls]
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)