Skip to content

Resource exhausted

resource_exhaustedHTTP 429Retrying the same request will not help

The request is over a limit the server enforces.

Why it happens

  • The batch costs more than the budget. Queries declare their cost with @cost, and every frame reports what it cost in meta.cost.
  • Too many operations in one batch, or a shape nested too deep or selecting too many fields.
  • A rate limit in front of the server.

What to do

  • Ask for less: smaller pages, fewer fields, or split the batch. Retrying the same request unchanged gives the same answer.

What it looks like

Inside a batch, the operation's frame carries it:

json
{
  "id": 1,
  "error": {
    "code": "resource_exhausted",
    "message": "Batch costs 1240, over the budget of 1000"
  },
  "fin": true
}

When the whole request is refused over HTTP, the answer is a problem document:

json
{
  "type": "https://eddyboutros.github.io/rayfold/errors/resource_exhausted",
  "title": "resource exhausted",
  "status": 429,
  "detail": "Batch costs 1240, over the budget of 1000",
  "code": "resource_exhausted"
}

See also all error types and the errors chapter of the specification.

Released under the Apache-2.0 license.