chihsuan opened a new pull request, #10432:
URL: https://github.com/apache/ozone/pull/10432

   ## What changes were proposed in this pull request?
   
   **Problem.** `TestOmSnapshot` is one of the slower integration suites 
because it runs its full ~73-test suite many times over. It is an abstract 
base; each concrete subclass starts its own `MiniOzoneCluster` and re-runs the 
whole suite under one config combination `(bucketLayout, disableNativeDiff, 
createLinkedBucket, ...)`. The subclasses contain **no test logic of their 
own**, just a constructor calling `super(...)` with a config. Today there are 8 
such combinations, and 4 of them are `*WithLinkedBuckets` variants that re-run 
the entire suite through linked (symlink) buckets.
   
   Those linked variants were added by HDDS-11705 (#7434) to verify that 
snapshot operations on a linked bucket act on the underlying source bucket. 
That fix works by resolving the bucket link up-front, before any operation 
logic runs. We verified this holds for every snapshot operation entry point:
   
   | Operation | Resolution site |
   | --- | --- |
   | createSnapshot | `OMSnapshotCreateRequest.preExecute()` |
   | deleteSnapshot | `OMSnapshotDeleteRequest.preExecute()` |
   | renameSnapshot | `OMSnapshotRenameRequest.preExecute()` |
   | listSnapshot | `OzoneManager.listSnapshot()` |
   | getSnapshotInfo | `OzoneManager.getSnapshotInfo()` |
   | snapshotDiff / submitSnapshotDiff | `OzoneManager.snapshotDiff()` / 
`submitSnapshotDiff()` |
   | cancelSnapshotDiff | `OzoneManager.cancelSnapshotDiff()` |
   | listSnapshotDiffJobs | `OzoneManager.listSnapshotDiffJobs()` |
   | read key via `.snapshot/<name>` | 
`OmSnapshotManager.getActiveFsMetadataOrSnapshot()` |
   
   Because link resolution is a single, up-front, operation-level step that 
happens before any layout-specific (`isFileSystemOptimized()`) branching, 
running the whole suite through links for *every* layout and native-lib setting 
re-proves the same resolution behaviour repeatedly. It produces identical diff 
output to the non-linked runs.
   
   **Change.** Keep one full linked run and drop the redundant copies. Delete 
three linked subclasses:
   
   - `TestOmSnapshotObjectStoreWithLinkedBuckets`
   - `TestOmSnapshotFsoWithNativeLibWithLinkedBuckets`
   - `TestOmSnapshotWithBucketLinkingLegacy`
   
   Keep `TestOmSnapshotFsoWithoutNativeLibWithLinkedBuckets` (FSO, native-off, 
linked) as the surviving full linked run. It still executes the entire suite 
through linked buckets, so every snapshot operation is still exercised against 
a link. Native-off is chosen deliberately so this coverage runs both on CI and 
locally (native-on classes self-skip when the RocksDB native lib is absent). 
The four plain classes (`FsoWithNativeLib`, `FsoWithoutNativeLib`, 
`ObjectStore`, `WithoutBucketLinkingLegacy`) are unchanged.
   
   This removes no test method. It reduces the matrix from 8 to 5 config 
combinations, saving roughly 3 full `MiniOzoneCluster` runs.
   
   **Coverage.** This is safe because link resolution is layout- and 
native-independent: it happens once, up-front, before any layout-specific 
(`isFileSystemOptimized()`) logic runs, so a linked run exercises exactly the 
same downstream code as a plain run plus the resolution step. The surviving 
`TestOmSnapshotFsoWithoutNativeLibWithLinkedBuckets` still runs the entire 
suite through linked buckets, so the HDDS-11705 contract (every snapshot 
operation resolves the link) remains fully exercised, and per-layout diff 
output remains covered by the four plain classes. **Tradeoff:** the 
OBJECT_STORE and LEGACY suites no longer run through linked buckets; FSO 
carries the linked coverage alone. If broader linked coverage is preferred, 
keeping one linked class per layout is a simple alternative.
   
   Not touched: the `TestOmSnapshotFileSystem*WithLinkedBuckets` classes (a 
separate base) are left as-is.
   
   This is the dimensional-collapse follow-up to HDDS-10308. It is independent 
of that change (disjoint files) and can merge in any order.
   
   ## What is the link to the Apache JIRA
   
   https://issues.apache.org/jira/browse/HDDS-15474
   
   ## How was this patch tested?
   
   Test-only change (deletes three config-wrapper test classes; adds nothing).
   
   - `hadoop-ozone/integration-test` compiles cleanly after the deletions (no 
dangling references; verified no `.java`/`.xml`/`.yaml`/`.yml`/`.txt` 
references to the deleted classes exist).
   - The surviving linked class 
`TestOmSnapshotFsoWithoutNativeLibWithLinkedBuckets` passes locally after the 
change: `Tests run: 72, Failures: 0, Errors: 0, Skipped: 0` (438s), the same 
test count as before the deletions, confirming linked-bucket coverage is intact.
   - CI exercises the full surviving matrix and will show the snapshot job 
wall-clock drop (expected ~11 min from removing three full-suite re-runs).
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to