[ 
https://issues.apache.org/jira/browse/IGNITE-25489?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aleksandr Chesnokov updated IGNITE-25489:
-----------------------------------------
    Description: 
Changes to message fields, IDs, enums and IDTO classes can affect rolling 
upgrade compatibility. The current check searches Java source text, so it can 
flag comments or formatting and miss changes to message registration. JSON 
descriptions capture field types and order, enum values and message IDs, making 
these details easy to compare without the surrounding Java code. CI should 
generate and compare these descriptions and show the diff before merge, without 
asking contributors to commit generated files. A diff is a signal for review, 
not an automatic compatibility verdict.

h3. Already merged

* IGNITE-29103: message and enum descriptions ([PR 
#13675|https://github.com/apache/ignite/pull/13675]).
* IGNITE-29143: collection and checks of committed JSON ([PR 
#13693|https://github.com/apache/ignite/pull/13693]). IGNITE-29261 replaces 
this process.
* IGNITE-29146: IDTO descriptions ([PR 
#13730|https://github.com/apache/ignite/pull/13730]).
* IGNITE-29144: message ID registrations ([PR 
#13763|https://github.com/apache/ignite/pull/13763]).

h3. Deliver in this order

# *IGNITE-29261 - generate and compare in CI.* Remove JSON from Git. During 
normal PR checks, compare the target branch snapshot with the PR test merge. 
Show the diff in Job Summary and save the full diff as an artifact. Support 
target branches with the required generators. A diff gives a warning; build and 
comparison errors fail the check. [PR 
#13802|https://github.com/apache/ignite/pull/13802] is under review.
# *IGNITE-29145 - update the compatibility label.* Read the JSON result through 
a trusted {{workflow_run}} workflow. For a successful check of the current PR 
head, add the label on a diff and remove it on no diff. Failed, cancelled or 
outdated results leave it unchanged. Replace the old Java-text rule in this 
step.

Merge in this order. Refresh the dependent PR after its prerequisite merges.

h3. Done when

For fork and repository PRs on supported target branches, normal checks show 
changes to message descriptions, IDTO, enums and IDs before merge. Contributors 
do not commit JSON, and reviewers can open the report. The label follows the 
latest successful check of the current PR head. Errors do not look like an 
empty diff. The label workflow never executes PR code. Compatibility tests and 
manual review remain necessary.

h3. Later work

IGNITE-29161 (code hashes) and IGNITE-29230 (semantic comparison) need separate 
scope decisions; they are not prerequisites for this rollout. Backporting 
generators is separate work. Generated descriptions do not cover every change 
in hand-written serialization. Bot comments and automatic JSON commits are 
outside this plan.

Background: [Ignite dev-list 
discussion|https://lists.apache.org/thread.html/hq3d8opxscww09pobvqfvwgc1d0v9cls].
 This ticket records the current plan.

  was:
Changes to message fields, IDs and IDTO classes can affect rolling upgrade 
compatibility. Show these changes to reviewers before merge, without asking 
contributors to commit generated JSON. A JSON diff is a signal for review, not 
an automatic compatibility verdict.

h3. Already merged

* IGNITE-29103: message and enum descriptions ([PR 
#13675|https://github.com/apache/ignite/pull/13675]).
* IGNITE-29143: collection and checks of committed JSON ([PR 
#13693|https://github.com/apache/ignite/pull/13693]). IGNITE-29261 replaces 
this process.
* IGNITE-29146: IDTO descriptions ([PR 
#13730|https://github.com/apache/ignite/pull/13730]).
* IGNITE-29144: message ID registrations ([PR 
#13763|https://github.com/apache/ignite/pull/13763]).

h3. Deliver in this order

# *IGNITE-29261 - generate and compare in CI.* Remove JSON from Git. During 
normal PR checks, compare the target branch snapshot with the PR test merge. 
Show the diff in Job Summary and save the full diff as an artifact. Support 
target branches with the required generators. A diff gives a warning; build and 
comparison errors fail the check. [PR 
#13802|https://github.com/apache/ignite/pull/13802] is under review.
# *IGNITE-29145 - update the compatibility label.* Read the JSON result through 
a trusted {{workflow_run}} workflow. For a successful check of the current PR 
head, add the label on a diff and remove it on no diff. Failed, cancelled or 
outdated results leave it unchanged. Replace the old Java-text rule in this 
step.

Merge in this order. Refresh the dependent PR after its prerequisite merges.

h3. Done when

For fork and repository PRs on supported target branches, normal checks show 
changes to message descriptions, IDTO, enums and IDs before merge. Contributors 
do not commit JSON, and reviewers can open the report. The label follows the 
latest successful check of the current PR head. Errors do not look like an 
empty diff. The label workflow never executes PR code. Compatibility tests and 
manual review remain necessary.

h3. Later work

IGNITE-29161 (code hashes) and IGNITE-29230 (semantic comparison) need separate 
scope decisions; they are not prerequisites for this rollout. Backporting 
generators is separate work. Generated descriptions do not cover every change 
in hand-written serialization. Bot comments and automatic JSON commits are 
outside this plan.

Background: [Ignite dev-list 
discussion|https://lists.apache.org/thread.html/hq3d8opxscww09pobvqfvwgc1d0v9cls].
 This ticket records the current plan.


> [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
>
> Changes to message fields, IDs, enums and IDTO classes can affect rolling 
> upgrade compatibility. The current check searches Java source text, so it can 
> flag comments or formatting and miss changes to message registration. JSON 
> descriptions capture field types and order, enum values and message IDs, 
> making these details easy to compare without the surrounding Java code. CI 
> should generate and compare these descriptions and show the diff before 
> merge, without asking contributors to commit generated files. A diff is a 
> signal for review, not an automatic compatibility verdict.
> h3. Already merged
> * IGNITE-29103: message and enum descriptions ([PR 
> #13675|https://github.com/apache/ignite/pull/13675]).
> * IGNITE-29143: collection and checks of committed JSON ([PR 
> #13693|https://github.com/apache/ignite/pull/13693]). IGNITE-29261 replaces 
> this process.
> * IGNITE-29146: IDTO descriptions ([PR 
> #13730|https://github.com/apache/ignite/pull/13730]).
> * IGNITE-29144: message ID registrations ([PR 
> #13763|https://github.com/apache/ignite/pull/13763]).
> h3. Deliver in this order
> # *IGNITE-29261 - generate and compare in CI.* Remove JSON from Git. During 
> normal PR checks, compare the target branch snapshot with the PR test merge. 
> Show the diff in Job Summary and save the full diff as an artifact. Support 
> target branches with the required generators. A diff gives a warning; build 
> and comparison errors fail the check. [PR 
> #13802|https://github.com/apache/ignite/pull/13802] is under review.
> # *IGNITE-29145 - update the compatibility label.* Read the JSON result 
> through a trusted {{workflow_run}} workflow. For a successful check of the 
> current PR head, add the label on a diff and remove it on no diff. Failed, 
> cancelled or outdated results leave it unchanged. Replace the old Java-text 
> rule in this step.
> Merge in this order. Refresh the dependent PR after its prerequisite merges.
> h3. Done when
> For fork and repository PRs on supported target branches, normal checks show 
> changes to message descriptions, IDTO, enums and IDs before merge. 
> Contributors do not commit JSON, and reviewers can open the report. The label 
> follows the latest successful check of the current PR head. Errors do not 
> look like an empty diff. The label workflow never executes PR code. 
> Compatibility tests and manual review remain necessary.
> h3. Later work
> IGNITE-29161 (code hashes) and IGNITE-29230 (semantic comparison) need 
> separate scope decisions; they are not prerequisites for this rollout. 
> Backporting generators is separate work. Generated descriptions do not cover 
> every change in hand-written serialization. Bot comments and automatic JSON 
> commits are outside this plan.
> Background: [Ignite dev-list 
> discussion|https://lists.apache.org/thread.html/hq3d8opxscww09pobvqfvwgc1d0v9cls].
>  This ticket records the current plan.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to