Rebalance Tasks

Drill down into individual pending or dead-lettered replication tasks.
EndpointMethodAdmin Required
/api/v1/admin/cluster/rebalance/tasksGETYes

Returns the full detail behind rebalance status's counts - every currently pending or dead-lettered replication task, including which node it targets and its last error. pendingByReason can only ever tell you how many tasks are stuck; this answers which node and why, the question that count alone can't - a handful of tasks stuck retrying against a node that's genuinely unreachable looks identical to a handful still working through normal backoff until you can see the target and the error.

Sorted by attempt count, descending - the most-stuck tasks first. Capped at 200 rows; this is a drill-down for a normally-small outstanding set, not a paginated browser for a large one.

Response

[
    {
        "id": "A1B2C3D4-E5F6-7890-ABCD-EF1234567890",
        "bucketName": "my-bucket",
        "key": "logo.png",
        "operation": "put",
        "targetNodeId": "B1C2D3E4-F5G6-7890-HIJK-LM1234567890",
        "reason": "write",
        "attempts": 3,
        "nextAttemptAt": "2025-01-15T10:34:00Z",
        "state": "pending",
        "lastError": "Failed to reach cluster peer http://10.0.1.6:8080: connectionRefused"
    }
]

Response Fields

id
string
The task's own id.
bucketName
string
The bucket the target object lives in.
key
string
The object key.
operation
string
put (push a copy) or delete (remove a copy).
targetNodeId
string
The node this task is trying to deliver to, from List Nodes.
reason
string
Why the task exists: write (a synchronous quorum write's straggler catch-up), rebalance (copying an object to a node that gained responsibility for it), or reclaim (removing a stale copy from a node that lost responsibility).
attempts
integer
How many delivery attempts have failed so far.
nextAttemptAt
string
When the dispatcher will retry next - exponential backoff (30s × 2^attempts, capped at 1 hour), so a task can legitimately sit pending for up to an hour between attempts without being stuck.
state
string
pending (still retrying) or failed (exhausted its 8-attempt retry budget and dead-lettered).
lastError
string
The most recent delivery error, or null if it hasn't been attempted yet.