Repository navigation
Implement AMQP sole conn spec - #16669
Merged
Merged
Conversation
acogoluegnes
force-pushed
the
amqp-sole-conn
branch
2 times, most recently
from
June 18, 2026 07:27
36fc28f to
29d24bb
Compare
acogoluegnes
force-pushed
the
amqp-sole-conn
branch
4 times, most recently
from
June 30, 2026 06:54
dc73317 to
15625cc
Compare
acogoluegnes
force-pushed
the
amqp-sole-conn
branch
5 times, most recently
from
July 10, 2026 09:43
94b5d5c to
9b3e12e
Compare
acogoluegnes
force-pushed
the
amqp-sole-conn
branch
5 times, most recently
from
July 22, 2026 06:24
577fafc to
7a1c325
Compare
acogoluegnes
force-pushed
the
amqp-sole-conn
branch
6 times, most recently
from
July 28, 2026 07:29
f237217 to
6db9fad
Compare
acogoluegnes
force-pushed
the
amqp-sole-conn
branch
5 times, most recently
from
August 5, 2026 12:05
60a19e7 to
8786e97
Compare
acogoluegnes
force-pushed
the
amqp-sole-conn
branch
2 times, most recently
from
August 6, 2026 10:00
22d32dd to
94897fc
Compare
Contributor
Author
|
@michaelklishin We removed the protocol prefix (I updated the PR description, it was outdated, but the code is correct). We use only the |
acogoluegnes
added a commit
to rabbitmq/rabbitmq-website
that referenced
this pull request
Aug 13, 2026
acogoluegnes
force-pushed
the
amqp-sole-conn
branch
2 times, most recently
from
August 18, 2026 13:51
57861c9 to
20c291c
Compare
acogoluegnes
added a commit
to rabbitmq/rabbitmq-website
that referenced
this pull request
Aug 18, 2026
acogoluegnes
added a commit
to rabbitmq/rabbitmq-website
that referenced
this pull request
Aug 19, 2026
acogoluegnes
force-pushed
the
amqp-sole-conn
branch
4 times, most recently
from
August 20, 2026 06:33
f8d04f0 to
f149f87
Compare
acogoluegnes
added a commit
to rabbitmq/rabbitmq-website
that referenced
this pull request
Aug 20, 2026
acogoluegnes
force-pushed
the
amqp-sole-conn
branch
from
August 20, 2026 09:25
f149f87 to
0ee4629
Compare
dumbbell
requested changes
Aug 20, 2026
dumbbell
left a comment
Collaborator
There was a problem hiding this comment.
A couple minor comments
acogoluegnes
force-pushed
the
amqp-sole-conn
branch
3 times, most recently
from
August 24, 2026 06:13
9c77067 to
d03d229
Compare
ansd
requested changes
Aug 25, 2026
acogoluegnes
force-pushed
the
amqp-sole-conn
branch
2 times, most recently
from
September 2, 2026 07:49
210d309 to
26a264a
Compare
dumbbell
requested changes
Sep 2, 2026
acogoluegnes
force-pushed
the
amqp-sole-conn
branch
2 times, most recently
from
September 3, 2026 06:40
a2984f9 to
50e0ac4
Compare
dumbbell
approved these changes
Sep 3, 2026
This commit implements the "AMQP Enforcing Connection Uniqueness
Version 1.0" specification extension. It introduces cluster-wide
tracking of AMQP 1.0 client connections to ensure only a single
connection can be established for a given `container-id` per vhost.
Implementation Details:
* Introduces `rabbit_sole_conn`, a `gen_server` that manages
a dedicated Khepri (Raft-based) store to track active connection
leases across the cluster.
* Updates `rabbit_amqp_reader` to parse the `sole-connection-for-container`
capability and coordinate with the sole connection registry during
the initial AMQP 1.0 `open` handshake.
* Enforces two conflict resolution policies defined by the spec:
- `refuse-connection`: Rejects the new connection with an `invalid-field`
condition if an existing connection holds the lease.
- `close-existing`: Terminates the existing connection with a
`resource-locked` condition and grants the lease to the new connection.
* Applies a `weak` detection policy, enforcing uniqueness only when
explicitly requested by the client via connection properties.
Security and Semantics:
* Connection leases are scoped strictly to the `vhost` and `container-id`.
* Enforces user ownership: a lease can only be taken over or replaced
(`close-existing`) by the same authenticated user. Attempts by different
users to hijack an active `container-id` are unconditionally refused.
Operability:
* Adds `rabbitmqctl sole_connection_status` to inspect the Raft consensus
state of the sole connection registry.
* Adds `rabbitmqctl sole_connection_force_delete` to allow operators to
manually evict stale leases if necessary.
* Introduces operator commands `wipe` and `start` for low-level recovery
and bootstrapping of the Khepri store.
Configuration Parameters:
* Expose the three configuration parameters of `rabbit_sole_conn`
in `rabbitmq.conf` under the `sole_connection` prefix.
* `sole_connection.tick_interval` -> `rabbit.sole_connection_tick_interval`
* `sole_connection.leader_wait_retry_timeout` -> `rabbit.sole_connection_leader_wait_retry_timeout`
* `sole_connection.default_timeout` -> `rabbit.sole_connection_default_timeout`
acogoluegnes
force-pushed
the
amqp-sole-conn
branch
from
September 3, 2026 08:59
50e0ac4 to
11d1167
Compare
acogoluegnes
added a commit
to rabbitmq/rabbitmq-website
that referenced
this pull request
Sep 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This commit implements the "AMQP Enforcing Connection Uniqueness
Version 1.0" specification extension. It introduces cluster-wide
tracking of AMQP 1.0 client connections to ensure only a single
connection can be established for a given
container-idper vhost.Implementation Details:
rabbit_sole_conn, agen_serverthat managesa dedicated Khepri (Raft-based) store to track active connection
leases across the cluster.
rabbit_amqp_readerto parse thesole-connection-for-containercapability and coordinate with the sole connection registry during
the initial AMQP 1.0
openhandshake.refuse-connection: Rejects the new connection with aninvalid-fieldcondition if an existing connection holds the lease.
close-existing: Terminates the existing connection with aresource-lockedcondition and grants the lease to the new connection.weakdetection policy, enforcing uniqueness only whenexplicitly requested by the client via connection properties.
Security and Semantics:
vhostandcontainer-id.(
close-existing) by the same authenticated user. Attempts by differentusers to hijack an active
container-idare unconditionally refused.Operability:
rabbitmqctl sole_connection_statusto inspect the Raft consensusstate of the sole connection registry.
rabbitmqctl sole_connection_force_deleteto allow operators tomanually evict stale leases if necessary.
wipeandstartfor low-level recoveryand bootstrapping of the Khepri store.
Configuration Parameters:
rabbit_sole_connin
rabbitmq.confunder thesole_connectionprefix.sole_connection.tick_interval->rabbit.sole_connection_tick_intervalsole_connection.leader_wait_retry_timeout->rabbit.sole_connection_leader_wait_retry_timeoutsole_connection.default_timeout->rabbit.sole_connection_default_timeout