RabbitMQ Error Guide: 'feature flag is disabled' — Fix Blocked Declarations & Upgrades
Fix 'feature flag is disabled' in RabbitMQ: enable required feature flags, finish a cluster-wide upgrade first, and unblock quorum and stream declarations.
- #rabbitmq
- #messaging
- #troubleshooting
- #errors
Stuck on this RabbitMQ error? Get the free incident triage checklist
A one-page PDF — the exact steps to isolate, fix, and verify a production error like this one. No spam, unsubscribe anytime.
Overview
An operation depends on a RabbitMQ feature flag that isn’t enabled on the cluster, so the broker refused it:
Feature flag `quorum_queue` is disabled - cannot declare a queue of type `quorum`
Feature flags gate functionality that changes on-disk or inter-node formats. A flag stays disabled until every node in the cluster supports it and an operator enables it. Until then, anything that needs the flag — declaring a quorum queue or stream, or completing an upgrade — is blocked.
Symptoms
queue.declarefor a quorum queue or stream fails withfeature flag ... is disabled.- An upgrade or
enablecommand reports a required flag cannot be enabled. rabbitmqctl list_feature_flagsshows the flag in statedisabled.- A newly-joined older node can’t be added because it lacks a flag the cluster already enabled.
- Features that worked in a lab (all-new nodes) fail in a cluster with a lagging node.
Common Root Causes
- Flag never enabled — the cluster was upgraded but the new stable flags were never turned on.
- Mixed-version cluster — one node runs an older version that doesn’t support the flag, so it can’t be enabled cluster-wide.
- Interrupted upgrade — a rolling upgrade stalled with nodes on different versions.
- Feature required by a declaration — client code declares quorum queues/streams on a cluster where the enabling flag is still off.
- Downgrade attempt — trying to run a node older than data written after a flag was enabled.
- Automation gap — provisioning enables features but skips
enable_feature_flag.
Diagnostic Workflow
List every feature flag and its state to see what’s disabled and what’s required:
rabbitmqctl list_feature_flags
rabbitmqctl list_feature_flags name state provided_by
Confirm all nodes are on a version that supports the flag (a flag can only be enabled when every node supports it):
rabbitmqctl cluster_status
rabbitmqctl status | grep -i 'rabbitmq version'
Check the log for the blocked operation and the named flag:
grep -i 'feature flag' /var/log/rabbitmq/rabbit@$(hostname -s).log | tail
Example Root Cause Analysis
A team rolled out code that declares quorum queues and hit Feature flag 'quorum_queue' is disabled on queue.declare. The cluster had recently been upgraded, so the capability existed but the flag had never been switched on.
rabbitmqctl list_feature_flags confirmed quorum_queue was disabled while every node’s version supported it. Because all nodes were on a compatible version, enabling the flag was safe:
rabbitmqctl list_feature_flags # confirm all nodes support it, state=disabled
rabbitmqctl enable_feature_flag quorum_queue
rabbitmqctl list_feature_flags | grep quorum_queue # now: enabled
The next queue.declare succeeded. Root cause: a post-upgrade step (enabling stable feature flags) was skipped, leaving the capability present but gated off. Enabling it — which is one-way — unblocked the declarations.
Prevention Best Practices
- After a cluster-wide upgrade, enable the stable feature flags that new functionality needs (
enable_feature_flag allor specific flags) as a documented post-upgrade step. - Never enable a flag until every node is on a compatible version; enabling is irreversible.
- Finish rolling upgrades fully — don’t leave the cluster running mixed versions longer than necessary.
- Gate client features that need a flag (quorum queues, streams) behind a check that the flag is enabled.
- Track feature-flag state in monitoring so a disabled-but-required flag is visible before it breaks a deploy.
Quick Command Reference
rabbitmqctl list_feature_flags # states of all flags
rabbitmqctl enable_feature_flag <flag_name> # enable one (irreversible)
rabbitmqctl enable_feature_flag all # enable all stable flags
rabbitmqctl cluster_status # confirm all nodes compatible
rabbitmqctl status | grep -i version
Conclusion
feature flag is disabled means an operation needs a capability the cluster hasn’t turned on — commonly quorum-queue or stream declarations after an upgrade where the flag was never enabled. Confirm every node is on a compatible version with cluster_status, then enable_feature_flag (remembering it’s one-way). Make enabling stable flags a standard post-upgrade step and gate flag-dependent client features so declarations never hit a disabled flag in production.
Fixed it? Get 500 RabbitMQ & DevOps AI prompts — free
500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.
- 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
- Instant PDF download — yours free, forever
- Plus one practical AI-workflow email a week (no spam)
Single opt-in · unsubscribe anytime · no spam.
Did this fix your issue?
Get 500 Battle-Tested DevOps AI Prompts — Free
500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.
- 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
- Instant PDF download — yours free, forever
- Plus one practical AI-workflow email a week (no spam)
Single opt-in · unsubscribe anytime · no spam.