Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "restate-operator"
version = "3.0.0"
version = "3.0.1"
authors = ["restate.dev"]
edition = "2024"
rust-version = "1.92"
Expand Down
2 changes: 1 addition & 1 deletion charts/restate-operator-crds/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ apiVersion: v2
name: restate-operator-crds
description: Restate operator CustomResourceDefinitions (RestateCluster, RestateDeployment, RestateCloudEnvironment)
type: application
version: "3.0.0"
version: "3.0.1"
4 changes: 2 additions & 2 deletions charts/restate-operator-helm/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ apiVersion: v2
name: restate-operator-helm
description: An operator for Restate clusters
type: application
version: "3.0.0"
version: "3.0.1"

dependencies:
- name: restate-operator-crds
version: "3.0.0"
version: "3.0.1"
repository: "file://../restate-operator-crds"
condition: installCrds
45 changes: 0 additions & 45 deletions release-notes/unreleased/185-reduce-introspection-query-load.md

This file was deleted.

22 changes: 22 additions & 0 deletions release-notes/v3.0.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Restate Operator v3.0.1 Release Notes

See the [v3.0.0 release notes](https://github.com/restatedev/restate-operator/blob/main/release-notes/v3.0.0.md) for changes prior to this release.

## Reduced RestateDeployment introspection query load

The RestateDeployment controller no longer issues a Restate introspection query (`POST /query` over `sys_invocation_status`) on every reconcile, and no longer reconciles on every HorizontalPodAutoscaler status update.

- **Owned HPAs are watched for spec changes only.** The Kubernetes HPA controller re-writes an HPA's status on a ~15s timer; with per-version autoscaling that is one such write per version (including every draining one), and each previously woke the owning RestateDeployment. The watch now filters to generation (spec) changes, so those heartbeats no longer trigger reconciles. The operator's HPA cache still sees every update.
- **The deployment-usage query runs only when needed.** The query answers whether this version is the one Restate routes new invocations to (registration) and whether older versions have drained (cleanup). In the common case — this version already latest, with no older version to drain — the operator reads "already latest" from the cheaper `GET /services` and skips the invocation-status query entirely. Registration, promotion, rollback, foreign-takeover, and drain paths run the full query exactly as before.

### Why this matters

With per-version autoscaling enabled, a deployment carrying several draining versions produced a steady stream of reconciles — roughly one HPA heartbeat every 15 seconds per version — each issuing an invocation-status query. Across many deployments sharing one Restate admin endpoint this multiplied into sustained query load that could overwhelm Restate's query engine, surfacing as `500 Internal Server Error` ("No such scanner") responses from `/query`.

### Impact

- No configuration change, and no change to registration, rollback, or drain behaviour.
- Restate admin/query load from the operator drops sharply in the common case: introspection queries are issued during rollouts and drains, not continuously.
- HorizontalPodAutoscaler status changes no longer trigger RestateDeployment reconciles; spec changes and (re)creation still do.

Related: #185.
Loading