[
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]