Skip to content

Commit c4debab

Browse files
Update 4.0.1 release notes to mention one more major pain point that Khepri addresses
1 parent c5867a7 commit c4debab

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

release-notes/4.0.1.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,30 @@ This section is incomplete and will be expanded as 4.0 approaches its release ca
245245

246246
### Core Server
247247

248+
#### Bug Fixes
249+
250+
* A whole category of issues with binding inconsistency are addressed with the stabilization
251+
of [Khepri](https://github.com/rabbitmq/khepri), a new [metadata store](https://www.rabbitmq.com/docs/metadata-store) that uses a tree of nested objects instead of multiple tables.
252+
253+
With Mnesia, the original metadata store, bindings are stored in two tables, one for durable
254+
bindings (between durable exchanges and durable queues or streams) and another for semi-durable
255+
and transient ones (where either the queue is transient or both the queue and the exchange are).
256+
257+
When a node was stopped or failed, all non-replicated transient queues on that node were deleted
258+
by the remaining cluster peers. Due to high lock contention around these tables with Mnesia, this
259+
could take a while. In the case where the restarted (or failed) node came online before all bindings
260+
were removed, and/or clients could begin to create new bindings concurrently, the bindings table
261+
rows could end up being inconsistent, resulting in obscure "binding not found" errors.
262+
263+
Khepri avoids this problem entirely by only supporting durable entities and using a very different
264+
[tree-based data model](https://github.com/rabbitmq/rabbitmq-server/pull/11225) that makes bindings removal much more efficient and lock contention-free.
265+
266+
Mnesia users can work around this problem by using [quorum queues](https://www.rabbitmq.com/docs/quorum-queues) or durable classic queues
267+
and durable exchanges. Their durable bindings will not be removed when a node stops.
268+
269+
GitHub issues (discussions): [#11952](https://github.com/rabbitmq/rabbitmq-server/discussions/11952), [#13030](https://github.com/rabbitmq/rabbitmq-server/discussions/13030), [#12927](https://github.com/rabbitmq/rabbitmq-server/discussions/12927), [#12783](https://github.com/rabbitmq/rabbitmq-server/discussions/12783)
270+
271+
248272
#### Enhancements
249273

250274
* Efficient sub-linear quorum queue recovery on node startup using checkpoints.

0 commit comments

Comments
 (0)