mirror of
https://github.com/rustfs/rustfs.git
synced 2026-09-05 19:55:37 +00:00
af896dc427
* test(ecstore): retain final decommission capacity snapshot override take_decommission_capacity_info_override_for_test used to pop the queue to exhaustion, after which get_decommission_all_pool_capacity_infos silently fell back to the host's real statfs numbers. Any new sampling point added to the decommission start paths re-introduced that host dependency and broke tests on some dev machines (#6989 patched one instance by topping up snapshot counts, but the coupling remained). Keep the final queued snapshot and replay it for every subsequent sample so tests always observe injected capacity once an override is installed. All existing injection patterns (single snapshot, repeated identical snapshots, decreasing sequences ending at the post-operation state) keep their semantics. * test(ci): serialize load-sensitive heal and cache-generation tests Under a heavily parallel nextest run (~792 ecstore tests), two tests of set_disk::ops::heal::heal_result_report_tests failed nondeterministically per round (different members each time; all 29 pass standalone). Every test in the module builds a TempDir-backed 4-disk hermetic erasure set and drives MiB-scale writes plus deep-scan heal: under load a single disk's IO can fail while write quorum still holds, flipping per-disk readback and aggregate-outcome assertions. The module's #[serial] markers do not serialize across nextest's process-per-test boundary. Verification also caught complete_multipart_generation_retires_cached_snapshot failing once under the same load; it and its object.rs sibling carry #[serial(metadata_cache_invalidation_probe)] and assert get_object_metadata_cache generation semantics - the same shape that forced the transition matrix tests into the serial group. Add both families to the ecstore-serial-flaky test-group in the default and ci profiles. Preventive serialization only, no retries. Three full parallel rounds after the change: 792/792 passed each round.
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
