Merge remote-tracking branch 'origin/main' into houseme/backlog-1479-task-journal-main-20260726

# Conflicts:
#	crates/ecstore/src/bucket/lifecycle/bucket_lifecycle_ops.rs
This commit is contained in:
houseme
2026-07-26 14:48:42 +08:00
2 changed files with 42 additions and 11 deletions
@@ -4594,11 +4594,12 @@ mod tests {
use crate::bucket::lifecycle::config_boundary;
use crate::bucket::lifecycle::manual_transition_job::{
ManualTransitionJobRecord, ManualTransitionJobState, ManualTransitionScopeAdmission, ManualTransitionScopeAdmissionClaim,
claim_manual_transition_scope_admission, delete_manual_transition_scope_admission_if_current,
legacy_manual_transition_scope_key, load_manual_transition_job_record, load_manual_transition_scope_admission,
load_manual_transition_scope_admission_with_etag, manual_transition_scope_record_object_name,
renew_manual_transition_job_lease, request_manual_transition_job_cancel, save_manual_transition_job_record,
save_manual_transition_scope_admission_if_absent, save_manual_transition_scope_admission_if_current,
ManualTransitionWorkerResult, claim_manual_transition_scope_admission, legacy_manual_transition_scope_key,
delete_manual_transition_scope_admission_if_current, load_manual_transition_job_record,
load_manual_transition_scope_admission, load_manual_transition_scope_admission_with_etag,
manual_transition_scope_record_object_name, renew_manual_transition_job_lease, request_manual_transition_job_cancel,
save_manual_transition_job_record, save_manual_transition_scope_admission_if_absent,
save_manual_transition_scope_admission_if_current,
};
use crate::bucket::lifecycle::replication_sink::{
ReplicateDecision, ReplicateTargetDecision, ReplicationStatusType, VersionPurgeStatusType,
@@ -7351,6 +7352,36 @@ mod tests {
assert!(!report.has_partial_enqueue());
}
#[test]
fn manual_transition_complete_preserves_worker_failure_summary() {
let options = ManualTransitionRunOptions::default();
let mut record = ManualTransitionJobRecord::new(Uuid::new_v4(), "manual-worker-summary-bucket", &options, "owner-a");
record.record_worker_result(ManualTransitionWorkerResult::Completed, ManualTransitionQueueSnapshot::default());
record.record_worker_result(ManualTransitionWorkerResult::TierFailure, ManualTransitionQueueSnapshot::default());
record.complete(
ManualTransitionRunReport {
bucket: "manual-worker-summary-bucket".to_string(),
scanned: 3,
eligible: 2,
enqueued: 2,
tier_failure: 1,
..Default::default()
},
ManualTransitionQueueSnapshot::default(),
);
assert_eq!(record.state, ManualTransitionJobState::Partial);
assert!(record.scan_completed);
assert_eq!(record.report.scanned, 3);
assert_eq!(record.report.eligible, 2);
assert_eq!(record.report.enqueued, 2);
assert_eq!(record.report.transition_completed, 1);
assert_eq!(record.report.transition_failed, 1);
assert_eq!(record.report.tier_failure, 2);
assert!(record.completed_at_unix_nanos.is_some());
}
#[tokio::test]
async fn manual_transition_counts_already_transitioned_object() {
let lc = latest_transition_lifecycle();
Generated
+6 -6
View File
@@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1784364478,
"narHash": "sha256-CdItYNdYUlm7NxqMVyQKqT2IxTwvapiPuRLWOyHTrbY=",
"lastModified": 1784872115,
"narHash": "sha256-THPEF2po0fsoH8gNtp+Ae0XFDJH3N/ol7xO3v6VMTJU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "20535e48e12c86043b577b8518234ff5dbb26957",
"rev": "335f0738cb2fa9708f3f428e39d2eae975d1338d",
"type": "github"
},
"original": {
@@ -29,11 +29,11 @@
]
},
"locked": {
"lastModified": 1784438913,
"narHash": "sha256-NYF7ZM5ip0u+w1pBFDpIGEbrbgN/wpnLFAmBkWkYMXw=",
"lastModified": 1785044261,
"narHash": "sha256-ehF/c4fLdgmNu7YXEClnmwhoBYddhYIVoSQpsZoorC4=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "afacd6819d3765a05814ee8e3de74c77d42ac799",
"rev": "fe2124391e739e7b3e8720cd8a73f06edd0aceba",
"type": "github"
},
"original": {