Devesh Kumar Singh created HDDS-17059:
-----------------------------------------

             Summary: Implement Jobworker-based key migration to satisfy 
storage policies
                 Key: HDDS-17059
                 URL: https://issues.apache.org/jira/browse/HDDS-17059
             Project: Apache Ozone
          Issue Type: Sub-task
          Components: Ozone Datanode, Ozone Filesystem, Ozone Manager
            Reporter: Devesh Kumar Singh
            Assignee: Devesh Kumar Singh


Updating a bucket’s storage policy changes the desired placement for applicable 
writes, but existing keys remain on their current storage volumes. For example, 
changing a bucket from HOT to COLD does not move existing RATIS THREE keys from 
SSD to ARCHIVE.

Introduce asynchronous key migration using Jobworker to rewrite existing keys 
onto the target storage tier while preserving their replication configuration.

Bucket-policy updates through CLI or native APIs and migration submission are 
separate operations; updating the policy alone must not be represented as 
completed data migration.

*Acceptance criteria:*

- A RATIS THREE key can migrate from SSD to ARCHIVE while retaining its name, 
content, replication configuration, and required attributes.
- Placement respects the target policy and configured fallback rules.
- Failed or incomplete copies cannot replace the committed source key.
- Concurrent overwrites or deletions cannot be overwritten by stale migration 
work.
- Tasks recover across OM failover and Jobworker restart without losing work or 
double-counting results.
- Progress, failures, retries, and cancellation outcomes are observable.
- Integration tests verify actual DN placement, data correctness, failure 
recovery, and unchanged replication.

The migration flow should:

1. Persist migration tasks and batches of key names, observed generations, and 
target storage policies in OM.
2. Allow lifecycle processing to create migration work.
3. Use StoragePolicySatisfierService to schedule tasks, select healthy 
Jobworkers, and dispatch commands through heartbeat responses.
4. Have Jobworker read each source key and invoke policy-aware rewriteKey, 
retaining the source replication configuration.
5. Reuse the OM → SCM → datanode write path to allocate and write target-tier 
blocks.
6. Validate the source generation before committing the replacement, protecting 
concurrent user updates.
7. Report per-key outcomes, retry eligible failures, and persist task progress 
through OM Ratis.



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