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

Siyao Meng updated HDDS-16729:
------------------------------
    Description: 
Follow-up to HDDS-16441: 
https://github.com/apache/ozone/pull/11321#discussion_r4111708010

HDDS-16441 prevents a cancelled snapshot diff task from marking a resubmitted 
job DONE with the old task's report metadata. The current regression test 
inserts the job-table entry directly and calls updateJobStatusToDone, so it 
does not cover cancellation, resubmission, report generation, or report 
retrieval together.

Add a deterministic regression test to the existing snapshot integration suite:

# Create two snapshots with a non-empty expected diff.
# Submit diff A and pause it after report generation, before publishing 
completion.
# Cancel A through the client API.
# Call submitSnapshotDiff again for the same snapshot pair, creating B with a 
different jobId. Keep B paused before report generation.
# Release A and verify B remains IN_PROGRESS with its completion metadata 
unchanged.
# Release B, wait for completion, and retrieve all report pages. Verify the 
expected entries and successful report integrity checks.

Use bounded synchronization to control the interleaving, without manually 
creating or replacing job-table entries. Any timing hook must allow 
cancellation and resubmission to proceed without holding the 
SnapshotDiffManager monitor.

The test must fail when the jobId completion guard introduced by HDDS-16441 is 
removed, and pass with the fix. Reuse the existing cluster lifecycle and test 
helpers.


  was:
Follow-up to HDDS-16441:
https://issues.apache.org/jira/browse/HDDS-16441
https://github.com/apache/ozone/pull/11321

HDDS-16441 prevents a cancelled snapshot diff task from marking a resubmitted 
job DONE with the old task's report metadata. The current regression test 
inserts the job-table entry directly and calls updateJobStatusToDone, so it 
does not cover cancellation, resubmission, report generation, or report 
retrieval together.

Add a deterministic regression test to the existing snapshot integration suite:

# Create two snapshots with a non-empty expected diff.
# Submit diff A and pause it after report generation, before publishing 
completion.
# Cancel A through the client API.
# Call submitSnapshotDiff again for the same snapshot pair, creating B with a 
different jobId. Keep B paused before report generation.
# Release A and verify B remains IN_PROGRESS with its completion metadata 
unchanged.
# Release B, wait for completion, and retrieve all report pages. Verify the 
expected entries and successful report integrity checks.

Use bounded synchronization to control the interleaving, without manually 
creating or replacing job-table entries. Any timing hook must allow 
cancellation and resubmission to proceed without holding the 
SnapshotDiffManager monitor.

The test must fail when the jobId completion guard introduced by HDDS-16441 is 
removed, and pass with the fix. Reuse the existing cluster lifecycle and test 
helpers.



> Add end-to-end regression coverage for snapshot diff cancellation and 
> resubmission
> ----------------------------------------------------------------------------------
>
>                 Key: HDDS-16729
>                 URL: https://issues.apache.org/jira/browse/HDDS-16729
>             Project: Apache Ozone
>          Issue Type: Test
>            Reporter: Siyao Meng
>            Assignee: Siyao Meng
>            Priority: Major
>
> Follow-up to HDDS-16441: 
> https://github.com/apache/ozone/pull/11321#discussion_r4111708010
> HDDS-16441 prevents a cancelled snapshot diff task from marking a resubmitted 
> job DONE with the old task's report metadata. The current regression test 
> inserts the job-table entry directly and calls updateJobStatusToDone, so it 
> does not cover cancellation, resubmission, report generation, or report 
> retrieval together.
> Add a deterministic regression test to the existing snapshot integration 
> suite:
> # Create two snapshots with a non-empty expected diff.
> # Submit diff A and pause it after report generation, before publishing 
> completion.
> # Cancel A through the client API.
> # Call submitSnapshotDiff again for the same snapshot pair, creating B with a 
> different jobId. Keep B paused before report generation.
> # Release A and verify B remains IN_PROGRESS with its completion metadata 
> unchanged.
> # Release B, wait for completion, and retrieve all report pages. Verify the 
> expected entries and successful report integrity checks.
> Use bounded synchronization to control the interleaving, without manually 
> creating or replacing job-table entries. Any timing hook must allow 
> cancellation and resubmission to proceed without holding the 
> SnapshotDiffManager monitor.
> The test must fail when the jobId completion guard introduced by HDDS-16441 
> is removed, and pass with the fix. Reuse the existing cluster lifecycle and 
> test helpers.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to