mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-26 16:28:15 +00:00
2b063b0c4a
Disk-replacement heal previously repaired only the latest version of each object and never enumerated objects whose latest version is a delete marker, so old versions were left unrepaired on a replaced drive. Switch heal enumeration from list_objects_v2 (latest-only) to list_object_versions (every version incl. delete markers), thread the concrete version_id into the existing per-version heal_object, and make resume cursor-based instead of positional: an opaque (marker, version_marker) paging token persisted in ResumeState, a length-prefixed injective per-version dedup key, schema_version bumps (v2) migrated independently in each of the two persisted files, and a retry that resets both managers together (fixing a latent rescan-skips-everything defect). Adds a real-disk-wipe e2e regression suite proving old versions and delete-marker-latest objects are physically restored. Fixes rustfs/backlog#918 Fixes rustfs/backlog#919 Closes rustfs/backlog#854
33 lines
1.4 KiB
Rust
33 lines
1.4 KiB
Rust
#[allow(unused_imports)]
|
|
pub(crate) mod bug_fixes {
|
|
pub(crate) use rustfs_ecstore::api::disk::DiskStore;
|
|
pub(crate) use rustfs_ecstore::api::disk::endpoint::Endpoint;
|
|
pub(crate) use rustfs_storage_api::BucketInfo;
|
|
}
|
|
|
|
#[allow(unused_imports)]
|
|
pub(crate) mod endpoint_index {
|
|
pub(crate) use rustfs_ecstore::api::disk::endpoint::Endpoint;
|
|
pub(crate) use rustfs_ecstore::api::layout::EndpointServerPools;
|
|
pub(crate) use rustfs_ecstore::api::layout::Endpoints;
|
|
pub(crate) use rustfs_ecstore::api::layout::PoolEndpoints;
|
|
pub(crate) use rustfs_ecstore::api::storage::ECStore;
|
|
pub(crate) use rustfs_ecstore::api::storage::init_local_disks;
|
|
}
|
|
|
|
#[allow(unused_imports)]
|
|
pub(crate) mod integration {
|
|
pub(crate) use rustfs_ecstore::api::bucket::metadata_sys::init_bucket_metadata_sys;
|
|
pub(crate) use rustfs_ecstore::api::disk::endpoint::Endpoint;
|
|
pub(crate) use rustfs_ecstore::api::layout::EndpointServerPools;
|
|
pub(crate) use rustfs_ecstore::api::layout::Endpoints;
|
|
pub(crate) use rustfs_ecstore::api::layout::PoolEndpoints;
|
|
pub(crate) use rustfs_ecstore::api::storage::ECStore;
|
|
pub(crate) use rustfs_ecstore::api::storage::init_local_disks;
|
|
pub(crate) use rustfs_storage_api::BucketOperations;
|
|
pub(crate) use rustfs_storage_api::BucketOptions;
|
|
pub(crate) use rustfs_storage_api::MakeBucketOptions;
|
|
pub(crate) use rustfs_storage_api::ObjectIO;
|
|
pub(crate) use rustfs_storage_api::ObjectOperations;
|
|
}
|