Skip to content
Settings

SCAN_BUDGET_EXHAUSTED — residual scan exceeded the backend's row budget

cyoda-go version 0.8.3

SCAN_BUDGET_EXHAUSTED — a search or grouped-stats condition could not be pushed down to storage, and evaluating it as a residual filter examined more rows than the backend’s configured scan budget.

HTTP: 400 Bad Request. Retryable: no.

Some conditions are not indexable — for example a regex or a wildcard path match — so the backend must scan candidate rows and post-filter them in the engine instead of pushing the predicate to storage. When the number of rows scanned this way exceeds the configured scan-budget limit, the request fails fast instead of running unbounded.

Not retryable with the same parameters. Narrow the query with an indexable predicate (equality or range on a stored field), add a further selective condition to shrink the candidate set, or raise the backend’s scan-budget configuration if the broad scan is intentional.

  • errors
  • errors.SEARCH_RESULT_LIMIT
  • errors.CONDITION_TYPE_MISMATCH
  • cyoda help errors — Every error response from the Cyoda REST API carries a structured errorCode in the properties object. Multiple codes may share the same HTTP status. Programmatic handling keys on errorCode, not HTTP status.
  • cyoda help errors SEARCH_RESULT_LIMIT — Direct (synchronous) search is bounded-or-fail: limit caps the matched result set rather than paging it. When more entities match than the limit allows, the request is rejected — it never returns a truncated prefix, because a partial result would be indistinguishable from a complete one.
  • cyoda help errors CONDITION_TYPE_MISMATCH — Validation is parse-based: a comparison or range operand is rejected only when it parses into none of the field’s declared DataTypes. For example "abc" against a DOUBLE field is rejected — it is not a number. A numeric-looking string against a polymorphic [INTEGER, STRING] field is accepted (it parses as STRING).