mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-05 12:57:42 +00:00
e0619e355f
is_all_not_found and is_all_volume_not_found delegated to is_err_bucket_not_found, which matches StorageError::DiskNotFound. When every erasure set in every pool was unreachable, the per-set aggregate DiskNotFound slice was classified as "all not found", so list_merged returned Ok(empty) and walk_result_from_set_errors was fed an availability failure disguised as an empty listing. Clients saw a successful empty ListObjects and mistook a full outage for an empty bucket. Introduce is_err_strict_not_found (FileNotFound / VolumeNotFound / FileVersionNotFound / ObjectNotFound / VersionNotFound, excluding DiskNotFound) for is_all_not_found, mirroring MinIO's isAllNotFound and DiskError::is_all_not_found. Give is_all_volume_not_found its own is_err_strict_volume_not_found (VolumeNotFound / BucketNotFound, minus DiskNotFound) so genuine volume/bucket absence still surfaces while a missing object under an existing volume is not escalated. Add is_all_disk_not_found and a pre-check in walk_result_from_set_errors so an all-offline slice surfaces DiskNotFound instead of being swallowed as an empty listing, while partial outages (a healthy set present) stay tolerated as before. Regression tests cover all-DiskNotFound rejection, genuine not-found acceptance, volume-not-found semantics, partial/empty short-circuit, and the walk full-offline vs partial-offline paths. Co-authored-by: heihutu <heihutu@gmail.com>
RustFS ECStore - Erasure Coding Storage
High-performance erasure coding storage engine for RustFS distributed object storage
📖 Documentation
· 🐛 Bug Reports
· 💬 Discussions
📖 Overview
RustFS ECStore provides erasure coding storage capabilities for the RustFS distributed object storage system. For the complete RustFS experience, please visit the main RustFS repository.
✨ Features
- Reed-Solomon erasure coding implementation
- Configurable redundancy levels (N+K schemes)
- Automatic data healing and reconstruction
- Multi-drive support with intelligent placement
- Parallel encoding/decoding for performance
- Efficient disk space utilization
📚 Documentation
For comprehensive documentation, examples, and usage guides, please visit the main RustFS repository.
📄 License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Copyright 2024 RustFS Team
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
RustFS is a trademark of RustFS, Inc.
All other trademarks are the property of their respective owners.
Made with ❤️ by the RustFS Storage Team
