[ 
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 diffs in Java source code, so 
it can flag comments or formatting and miss changes to message registration. 
Let's add JSON descriptions that contain only the details relevant to rolling 
upgrade compatibility, such as field types, field order, enum values and 
message IDs. 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: committed the generated JSON files to Git and added a CI check 
to verify they are up to date ([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 - report changes in the PR.* A trusted {{workflow_run}} 
workflow uses the existing {{check-wire}} result and the JSON completeness 
check for the current PR head. On a diff, set {{compatibility}} and post or 
update one comment linking to Job Summary. On an empty diff, remove the comment 
and only the label set by this workflow. Use {{check-wire}} as the PR check for 
the comparison and retire the old {{pull_request_target}} reporter.

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

For fork and repository PRs targeting {{{}master{}}}, normal CI checks show the 
JSON diff in Job Summary and a warning in {{check-wire}} when the wire format 
changes. Contributors can submit source changes without committing generated 
JSON.

After the existing JSON completeness check passes, a successful comparison for 
the current PR head with a diff adds {{compatibility}} and posts or updates one 
bot comment linking to Job Summary. A successful comparison with no diff 
removes the bot comment and only the label set by this workflow. Errors do not 
look like an empty diff. The reporting workflow runs trusted code from the 
default branch. Compatibility tests and manual review remain necessary.
h3. Later work
 * IGNITE-29289 investigates an early Java-file hint for committers when a PR 
is opened.
 * IGNITE-29230 tracks semantic comparison of generated wire format 
descriptions.
 * IGNITE-29161 tracks the code hash proposal and needs a separate scope 
decision.
 * Release-branch migration and generator backports are separate work.

Generated descriptions do not cover every change in hand-written serialization. 
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, 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. Let's add 
JSON descriptions that contain only the details relevant to rolling upgrade 
compatibility, such as field types, field order, enum values and message IDs. 
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: committed the generated JSON files to Git and added a CI check 
to verify they are up to date ([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 - report changes in the PR.* A trusted {{workflow_run}} 
workflow uses the existing {{check-wire}} result and the JSON completeness 
check for the current PR head. On a diff, set {{compatibility}} and post or 
update one comment linking to Job Summary. On an empty diff, remove the comment 
and only the label set by this workflow. Use {{check-wire}} as the PR check for 
the comparison and retire the old {{pull_request_target}} reporter.

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

h3. Done when

For fork and repository PRs targeting {{master}}, normal CI checks show the 
JSON diff in Job Summary and a warning in {{check-wire}} when the wire format 
changes. Contributors can submit source changes without committing generated 
JSON.

After the existing JSON completeness check passes, a successful comparison for 
the current PR head with a diff adds {{compatibility}} and posts or updates one 
bot comment linking to Job Summary. A successful comparison with no diff 
removes the bot comment and only the label set by this workflow. Errors do not 
look like an empty diff. The reporting workflow runs trusted code from the 
default branch. Compatibility tests and manual review remain necessary.

h3. Later work

* IGNITE-29289 investigates an early Java-file hint for committers when a PR is 
opened.
* IGNITE-29230 tracks semantic comparison of generated wire format descriptions.
* IGNITE-29161 tracks the code hash proposal and needs a separate scope 
decision.
* Release-branch migration and generator backports are separate work.

Generated descriptions do not cover every change in hand-written serialization. 
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 diffs in Java source code, 
> so it can flag comments or formatting and miss changes to message 
> registration. Let's add JSON descriptions that contain only the details 
> relevant to rolling upgrade compatibility, such as field types, field order, 
> enum values and message IDs. 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: committed the generated JSON files to Git and added a CI 
> check to verify they are up to date ([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 - report changes in the PR.* A trusted {{workflow_run}} 
> workflow uses the existing {{check-wire}} result and the JSON completeness 
> check for the current PR head. On a diff, set {{compatibility}} and post or 
> update one comment linking to Job Summary. On an empty diff, remove the 
> comment and only the label set by this workflow. Use {{check-wire}} as the PR 
> check for the comparison and retire the old {{pull_request_target}} reporter.
> Merge in this order. Refresh the dependent PR after its prerequisite merges.
> h3. Done when
> For fork and repository PRs targeting {{{}master{}}}, normal CI checks show 
> the JSON diff in Job Summary and a warning in {{check-wire}} when the wire 
> format changes. Contributors can submit source changes without committing 
> generated JSON.
> After the existing JSON completeness check passes, a successful comparison 
> for the current PR head with a diff adds {{compatibility}} and posts or 
> updates one bot comment linking to Job Summary. A successful comparison with 
> no diff removes the bot comment and only the label set by this workflow. 
> Errors do not look like an empty diff. The reporting workflow runs trusted 
> code from the default branch. Compatibility tests and manual review remain 
> necessary.
> h3. Later work
>  * IGNITE-29289 investigates an early Java-file hint for committers when a PR 
> is opened.
>  * IGNITE-29230 tracks semantic comparison of generated wire format 
> descriptions.
>  * IGNITE-29161 tracks the code hash proposal and needs a separate scope 
> decision.
>  * Release-branch migration and generator backports are separate work.
> Generated descriptions do not cover every change in hand-written 
> serialization. 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