Skip to content

ADR-0224: A cluster read as one is changed as one ​

  • Status: accepted
  • Date: 2026-11-01
  • Deciders: Mahdi Amirabdollahi
  • Amends: ADR-0084 for clusters read as one

Context ​

The shared create, delete, purge and bulk paths were written for Artemis: they resolve a queue by name and run once per node over its management URL (ADR-0084). A Kafka or RabbitMQ cluster has no management URL on its nodes; its driver changes the cluster as a whole, by resource id. Through the shared routes such a cluster was refused with "no node with a management URL", although its driver declares the verbs, and a RabbitMQ queue is named by its virtual host and name, which a bare name cannot carry. PagedListService already reads such a cluster as one.

Decision ​

  • A cluster is read as one when none of its nodes has a management URL (ClusterKinds.readAsOne), the rule the paged lists already use. Kafka and RabbitMQ clusters are; Artemis clusters are not.
  • On such a cluster the shared delete, purge and bulk paths take the resource id they already resolve and run the driver's whole-cluster operation (WholeClusterOperations): the dry run is the driver's preview (its estimate and its etag basis); the real run audits, previews again, compares the etag and executes, refused as stale if it changed since the preview.
  • The gate types stay subscription.delete, subscription.purge and destination.delete, and their parameters carry the id, so an approval policy written for them holds on every system.

Consequences ​

  • Kafka topics and RabbitMQ queues and exchanges are deleted and purged from the shared screens.
  • Breaking: the gated parameters gain id, and a held request from before the change cannot be approved; it is refused as changed and asked again.
  • Artemis keeps its per-node fan-out and its partial outcomes.

Alternatives considered ​

  • System-only routes for delete and purge: duplicates the shared screens and lets approval policies silently not apply.
  • Teach the per-node path about vhosts: a node fan-out has no meaning where the driver changes the cluster.

Apache-2.0. Apache Kafka, Apache ActiveMQ and Apache ActiveMQ Artemis are trademarks of the Apache Software Foundation. RabbitMQ is a trademark of its owner. Rahdar is an independent project, not produced by, endorsed by, or affiliated with the ASF or the owner of RabbitMQ.