# 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
