mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-10 15:16:56 +00:00
feat(heal): expose scanner-aware operations status (#3483)
Co-authored-by: Henry Guo <marshawcoco@users.noreply.github.com>
This commit is contained in:
@@ -309,6 +309,13 @@ Compare these fields between baseline and tuned runs:
|
||||
Do not use a single CPU spike as the conclusion. Compare average and p95 CPU
|
||||
over the same observation window.
|
||||
|
||||
For heal or bitrot pressure investigations, also capture
|
||||
`/v3/background-heal/status` and compare `healOperations.queueLength`,
|
||||
`healOperations.activeTasks`, `healOperations.queuedBySource`,
|
||||
`healOperations.activeBySource`, `healOperations.queuedByPriority`, and
|
||||
`healOperations.activeByPriority`. These fields distinguish scanner-submitted
|
||||
low-priority work from manual admin heal and auto-heal work.
|
||||
|
||||
## Interpreting Results
|
||||
|
||||
A useful tuning result has all of these properties:
|
||||
|
||||
@@ -148,6 +148,33 @@ Use these counters to decide whether scan progress is limited by scanner pacing
|
||||
or by a downstream subsystem such as lifecycle transition, replication repair,
|
||||
or heal admission.
|
||||
|
||||
## Reading Heal Operations
|
||||
|
||||
The background heal status route is:
|
||||
|
||||
```text
|
||||
POST /v3/background-heal/status
|
||||
```
|
||||
|
||||
It reports scanner-driven bitrot state together with heal queue execution
|
||||
state. `healQueueLength` and `healActiveTasks` keep the legacy totals.
|
||||
`healOperations` adds the same totals split by request source and priority:
|
||||
|
||||
| Field | Meaning |
|
||||
|---|---|
|
||||
| `queueLength` | Total queued heal requests. |
|
||||
| `activeTasks` | Total running heal tasks. |
|
||||
| `queuedBySource` | Queued requests split into `scanner`, `admin`, `autoHeal`, and `internal`. |
|
||||
| `activeBySource` | Running tasks split into `scanner`, `admin`, `autoHeal`, and `internal`. |
|
||||
| `queuedByPriority` | Queued requests split into `low`, `normal`, `high`, and `urgent`. |
|
||||
| `activeByPriority` | Running tasks split into `low`, `normal`, `high`, and `urgent`. |
|
||||
|
||||
Use this route when `metrics.source_work` shows `heal` or `bitrot` queued or
|
||||
missed work. Scanner-originated object checks should appear under
|
||||
`scanner/low` for opportunistic work, while manual admin heal should appear
|
||||
under `admin/high`. If scanner work grows but admin work remains blocked, treat
|
||||
that as heal queue pressure rather than scanner pacing pressure.
|
||||
|
||||
## Reading Replication Repair
|
||||
|
||||
`metrics.replication_repair`, `metrics.current_cycle_replication_repair`, and
|
||||
|
||||
Reference in New Issue
Block a user