Welcome to rustfs
Your guide to understanding the codebase
Learning Path
Overview
- 14 units
- 4 levels
Orchestration & APIs
- Pipelines, workflows, public interfaces • 3 units
Object Storage Fundamentals
- Architecture·7
Data Integrity and Protection
- Data Model·11
Configuration and Observability
- Infrastructure·13
Core Logic & Data
- Business rules, schemas, models • 3 units
S3 API and Protocol Gateways
- API·9
Storage Optimization
- Infrastructure·2
Security and Access Control
- Security·8
Interaction & Integration
- UI components, external connectors • 3 units
Concurrency and Distributed Coordination
- Concurrency·2
Integration and Communication
- Integration·13
Data Lifecycle and Replication
- Workflow·9
Cross-Cutting Concerns
- Auth, logging, config, testing • 2 units
Production Deployment
Compliance and Data Governance
- Security·12
Test Your Knowledge
21 questions across all levels
Challenge
Implement a healing priority queue system that categorizes objects by corruption severity and healing urgency. The system should prioritize critical objects (recently accessed, user-facing data) over cold storage objects and allow administrators to manually escalate specific objects to high priority. Your implementation should integrate with the existing healing channel infrastructure and support dynamic priority adjustment based on system load.
Starting Points
crates/ahm/src/heal/channel.rs:1-91- Study the current healing channel implementation - how objects are queued and processed
crates/ahm/src/heal/channel.rs:45-70- This channel-based healing system will need to be extended to support priority ordering
crates/protos/src/node.proto:1-184- Review the node communication protocol - you may need to add priority fields to healing messages
.docker/compose/docker-compose.cluster.yaml:1-83- Understand the cluster setup for testing your distributed priority queue across multiple nodes
Success Criteria
- High-priority healing tasks are processed before low-priority ones, even if queued later
- The system can handle at least 10,000 queued healing tasks without significant memory overhead
- An administrator can escalate a specific object's healing priority via API or CLI
- Priority queue state is visible through observability metrics (queue depth per priority level)
- Existing healing functionality continues to work - objects still get healed successfully
- The cluster setup in docker-compose can demonstrate priority-based healing across multiple nodes
Hints
- Hint 1: Understanding healing workflows conceptual
- Hint 2: Priority queue data structures implementation
- Hint 3: Defining priority levels implementation
- Hint 4: Integration points code location
- Hint 5: Dynamic priority adjustment conceptual
Prerequisites
- Rust ownership and borrowing
- Thread-safe data structures (Mutex, RwLock, channels)
- Priority queues and heap data structures
- Protocol Buffers basics