feat(ilm): add durable manual transition job store (#5229)

* feat(ilm): add manual transition job route contract

Refs #1479

Co-Authored-By: heihutu <heihutu@gmail.com>

* feat(ilm): add durable manual transition job store

Co-Authored-By: heihutu <heihutu@gmail.com>

* fix(ilm): harden durable transition job cancellation

Co-Authored-By: heihutu <heihutu@gmail.com>

---------

Co-authored-by: heihutu <heihutu@gmail.com>
This commit is contained in:
houseme
2026-07-25 22:54:14 +08:00
committed by GitHub
parent 7ab0955f8b
commit 6974963e20
9 changed files with 2271 additions and 486 deletions
File diff suppressed because it is too large Load Diff
+16 -15
View File
@@ -193,10 +193,22 @@ pub(crate) mod bucket_target_sys {
}
pub(crate) mod lifecycle {
pub(crate) use super::ecstore_bucket::lifecycle::manual_transition_job::{
ManualTransitionJobRecord, ManualTransitionJobState, ManualTransitionScopeAdmission, ManualTransitionScopeAdmissionClaim,
claim_manual_transition_scope_admission, delete_manual_transition_scope_admission_if_current,
load_manual_transition_job_record, load_manual_transition_job_record_with_etag, load_manual_transition_scope_admission,
manual_transition_job_lease_expired, manual_transition_scope_admission_lease_expired,
persist_manual_transition_job_progress, renew_manual_transition_job_lease, request_manual_transition_job_cancel,
save_manual_transition_job_record, save_manual_transition_job_record_if_current,
};
pub(crate) type ManualTransitionCancelCheck =
super::ecstore_bucket::lifecycle::bucket_lifecycle_ops::ManualTransitionCancelCheck;
pub(crate) type ManualTransitionQueueSnapshot =
super::ecstore_bucket::lifecycle::bucket_lifecycle_ops::ManualTransitionQueueSnapshot;
pub(crate) type ManualTransitionProgressSink =
super::ecstore_bucket::lifecycle::bucket_lifecycle_ops::ManualTransitionProgressSink;
pub(crate) type ManualTransitionRunOptions =
super::ecstore_bucket::lifecycle::bucket_lifecycle_ops::ManualTransitionRunOptions;
pub(crate) type ManualTransitionRunExecution =
super::ecstore_bucket::lifecycle::bucket_lifecycle_ops::ManualTransitionRunExecution;
pub(crate) type ManualTransitionRunReport = super::ecstore_bucket::lifecycle::bucket_lifecycle_ops::ManualTransitionRunReport;
pub(crate) async fn enqueue_transition_for_existing_objects_scoped(
@@ -210,19 +222,8 @@ pub(crate) mod lifecycle {
.await
}
pub(crate) async fn enqueue_transition_for_existing_objects_scoped_with_cancel(
api: std::sync::Arc<super::ECStore>,
bucket: &str,
options: ManualTransitionRunOptions,
cancel_token: Option<tokio_util::sync::CancellationToken>,
) -> super::Result<ManualTransitionRunExecution> {
super::ecstore_bucket::lifecycle::bucket_lifecycle_ops::enqueue_transition_for_existing_objects_scoped_with_cancel(
api,
bucket,
options,
cancel_token,
)
.await
pub(crate) fn manual_transition_queue_snapshot() -> ManualTransitionQueueSnapshot {
super::ecstore_bucket::lifecycle::bucket_lifecycle_ops::manual_transition_queue_snapshot()
}
pub(crate) mod tier_last_day_stats {