ScyllaDB University Live | Free Virtual Training Event
Learn more
ScyllaDB Documentation Logo Documentation
  • Deployments
    • Cloud
    • Server
  • Tools
    • ScyllaDB Manager
    • ScyllaDB Monitoring Stack
    • ScyllaDB Operator
  • Drivers
    • CQL Drivers
    • DynamoDB Drivers
    • Supported Driver Versions
  • Resources
    • ScyllaDB University
    • Community Forum
    • Tutorials
Install
Search Ask AI
ScyllaDB Docs ScyllaDB Operator Troubleshoot Recover from a stuck config change
For AI agents: a documentation index is available at https://operator.docs.scylladb.com/v1.23/llms.txt. A Markdown version of this page is at https://operator.docs.scylladb.com/v1.23/troubleshoot/recover-from-stuck-config-change.md.

Recover from a stuck config change¶

Use this procedure when a change to a ScyllaCluster leaves a ScyllaDB node unable to start, and fixing or reverting the change doesn’t unblock the rack.

When to use this procedure¶

Use this guide when all of the following hold:

  • After a spec change, a Pod of the rack never becomes ready: it is Running but not Ready, or it stays Pending.

  • You have fixed or reverted the change, but the Pod still runs with the old Pod template.

  • The Progressing condition stays True and its message names the rack’s StatefulSet:

    NAMESPACE=scylla
    CLUSTER=my-cluster
    kubectl -n "${NAMESPACE}" get scyllacluster "${CLUSTER}" -o jsonpath='{.status.conditions[?(@.type=="Progressing")].message}'
    
    Progressing: StatefulSetControllerProgressing: StatefulSetControllerProgressing: Waiting for StatefulSet "scylla/my-cluster-us-east-1-us-east-1a" to roll out.
    Progressing: JobControllerProgressing: JobControllerProgressing: Waiting for StatefulSet controller to finish progressing with ScyllaCluster "scylla/my-cluster"
    Progressing: JobControllerProgressing: JobControllerProgressing: Waiting for ScyllaCluster "scylla/my-cluster" nodes to be ready
    

This procedure doesn’t apply during a ScyllaDB version upgrade. Recreating the StatefulSet would make it roll the remaining nodes without the per-node upgrade steps of ScyllaDB Operator.

To find out why the node can’t start, list the Pods of the cluster and find the one with fewer ready containers than the others:

kubectl -n "${NAMESPACE}" get pods -l scylla/cluster="${CLUSTER}"
NAME                                READY   STATUS    RESTARTS      AGE
my-cluster-us-east-1-us-east-1a-0   5/5     Running   0             2d
my-cluster-us-east-1-us-east-1a-1   5/5     Running   0             2d
my-cluster-us-east-1-us-east-1a-2   4/5     Running   3 (2m ago)    15m

Set its name and check its ScyllaDB log:

POD=my-cluster-us-east-1-us-east-1a-2
kubectl -n "${NAMESPACE}" logs "${POD}" -c scylla | grep -i 'startup failed'

For a Pending Pod, check the events at the end of kubectl -n "${NAMESPACE}" describe pod "${POD}" instead. Examples of such changes are resources that no Kubernetes node can satisfy, and a ScyllaDB configuration the node rejects.

Cause¶

ScyllaDB Operator applies a spec change to one rack at a time, and waits for the rack’s StatefulSet to finish rolling out before it applies the next change. This keeps at most one node of the datacenter down at any time, so that the data stays available throughout the change. A change to a Pod template the node can’t start with never finishes rolling out, so your fix never reaches the StatefulSet. Deleting the broken Pod alone doesn’t help: the StatefulSet recreates it from the same broken template.

Recover¶

  1. Make sure the spec contains the fix or the revert. In the next step the StatefulSet is recreated from the spec, so a broken spec brings the broken Pod back.

  2. Set the name of the StatefulSet from the Progressing message and delete it, without deleting its Pods:

    STATEFULSET=my-cluster-us-east-1-us-east-1a
    kubectl -n "${NAMESPACE}" delete statefulset "${STATEFULSET}" --cascade=orphan
    

    Warning

    Don’t leave out --cascade=orphan. Without it, Kubernetes deletes every Pod of the rack, and the whole rack restarts.

    ScyllaDB Operator recreates the StatefulSet from the spec within seconds, and the StatefulSet adopts the running Pods. Pods that already match the spec keep running.

  3. Replace the broken Pod:

    • With parallel node operations enabled, the StatefulSet replaces it on its own within a few minutes. Skip to the next step.

    • With parallel node operations disabled, the StatefulSet never replaces a Pod that isn’t ready, so delete it yourself:

      kubectl -n "${NAMESPACE}" delete pod "${POD}"
      

    The new Pod keeps the node’s data volume.

  4. Wait for the change to finish rolling out:

    kubectl -n "${NAMESPACE}" wait --for='condition=Progressing=False' --timeout=10m "scyllacluster/${CLUSTER}"
    kubectl -n "${NAMESPACE}" wait --for='condition=Available=True' --timeout=10m "scyllacluster/${CLUSTER}"
    

Was this page helpful?

PREVIOUS
Recover from a stuck scale-down
NEXT
Troubleshoot performance
  • Create an issue
  • Edit this page

On this page

  • Recover from a stuck config change
    • When to use this procedure
    • Cause
    • Recover
ScyllaDB Operator
Search Ask AI
  • v1.23
    • master
    • v1.23
    • v1.22
    • v1.21
    • v1.20
  • Get Started
    • What Is ScyllaDB Operator?
    • ScyllaDB Concepts on Kubernetes
  • Install Operator
    • Provision infrastructure
      • Set up a GKE cluster for ScyllaDB
      • Set up an EKS cluster for ScyllaDB
      • Set up an OKE cluster for ScyllaDB
      • Set up an OpenShift cluster for ScyllaDB
      • Multi-DC
        • Set up multiple GKE clusters
        • Set up multiple EKS clusters
    • Install with GitOps
    • Install with Helm
    • Install on OpenShift
  • Deploy ScyllaDB
    • Before you deploy
      • Set up dedicated node pools
      • Configure CPU pinning
      • Configure nodes
      • Configure ScyllaDB Operator
    • Deploy your first cluster
    • Reference deployments
      • Reference deployment: GKE
      • Reference deployment: EKS
      • Reference deployment: OKE
      • Reference deployment: OpenShift
    • Deploy a multi-datacenter ScyllaDB cluster
    • Install ScyllaDB Manager
    • Set up networking
      • Configure external access
      • IPv6 networking
        • Getting started with IPv6 networking
        • Configure dual-stack networking
        • Configure IPv6-only networking
        • Migrate clusters to IPv6
        • Troubleshoot IPv6 networking issues
        • IPv6 networking concepts
    • Set up monitoring
      • Set up ScyllaDB Monitoring
      • Set up ScyllaDB Monitoring on OpenShift
      • Expose Grafana
    • Production checklist
  • Connect Your App
    • Connect via CQL
    • Alternator (DynamoDB API)
    • Discovery endpoint
  • Understand
    • Storage
    • Tuning
    • ScyllaDB Manager
    • Networking
    • ScyllaDB Monitoring overview
    • Bootstrap synchronisation
    • Automatic data cleanup
    • Sidecar and pod anatomy
    • Ignition
    • Pod disruption budgets
    • Security
    • StatefulSets and racks
  • Operate
    • Scale, add, remove racks
    • Resize nodes in a rack
    • Replace nodes
    • Expand storage volumes
    • Use maintenance mode
    • Back up and restore
    • Restore from backup
    • Perform a rolling restart
    • Migrate a rack to a new node pool
    • Decommission a datacenter
    • Pass additional ScyllaDB arguments
    • Configure precomputed IO properties
  • Upgrade
    • Upgrading ScyllaDB Operator
    • Upgrading ScyllaDB clusters
  • Troubleshoot
    • Investigate pod restarts
    • Change log level on a live cluster
    • Recover from a failed node replace
    • Recover from a stuck scale-down
    • Recover from a stuck config change
    • Troubleshoot performance
    • Collect debugging information
      • Collect data with must-gather
      • must-gather contents
      • Query system tables for debugging
    • Collect core dumps
  • Reference
    • API Reference
      • scylla.scylladb.com
        • NodeConfig (scylla.scylladb.com/v1alpha1)
        • ScyllaCluster (scylla.scylladb.com/v1)
        • ScyllaDBDatacenterNodesStatusReport (scylla.scylladb.com/v1alpha1)
        • ScyllaDBDatacenter (scylla.scylladb.com/v1alpha1)
        • ScyllaDBManagerClusterRegistration (scylla.scylladb.com/v1alpha1)
        • ScyllaDBManagerTask (scylla.scylladb.com/v1alpha1)
        • ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)
        • ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)
    • Feature gates
    • IPv6 configuration reference
    • Releases
    • Known issues
    • Conditions reference
    • nodetool alternatives
  • Contributing to ScyllaDB Operator
Docs Tutorials University Contact Us About Us
© 2026, ScyllaDB. All rights reserved. | Terms of Service | Privacy Policy | ScyllaDB, and ScyllaDB Cloud, are registered trademarks of ScyllaDB, Inc.
Last updated on 09 October 2026.
Powered by Sphinx 9.1.1 & ScyllaDB Theme 1.10.0