Go to file
Loïc Hoguin ee0c6a69b9
CQ shared store: Delete from index on remove or roll over
It was expensive to delete files because we had clean up
the index and to get the messages in the file we have to
scan it.

Instead of cleaning up the index on file delete this
commit deletes from the index as soon as possible.
There are two scenarios: messages that are removed
from the current write file, and messages that are
removed from other files. In the latter case, we
can just delete the index entry on remove. For messages
in the current write file, we want to keep the entry
in case fanout is used, because we don't want to write
the fanout message multiple times if we can avoid it.
So we keep track of removes in the current write file
and do a cleanup of these entries on file roll over.

Compared to the previous implementation we will no
longer increase the ref_count of messages that are
not in the current write file, meaning we may do more
writes in fanout scenarios. But at the same time the
file delete operation is much cheaper.

Additionally, we prioritise delete calls in rabbit_msg_store_gc.
Without that change, if the compaction was lagging behind,
we could have file deletion requests queued behind many compaction
requests, leading to many unnecessary compactions of files
that could already be deleted.
2025-05-30 13:14:16 +02:00
.github Relocate temp folder from /tmp to /var 2025-05-28 18:14:42 +00:00
deps CQ shared store: Delete from index on remove or roll over 2025-05-30 13:14:16 +02:00
doc Add files to specify license info 2020-08-18 12:42:43 -07:00
mk Use Erlang.mk's native Elixir support for CLI 2025-03-25 15:20:23 +00:00
packaging Use Erlang.mk's native Elixir support for CLI 2025-03-25 15:20:23 +00:00
release-notes 4.1.0 release notes edits 2025-05-03 11:48:52 -04:00
scripts Remove Bazel files 2025-03-14 12:39:12 +00:00
selenium Relocate temp folder from /tmp to /var 2025-05-28 18:14:42 +00:00
.dockerignore dockerignore deps 2021-03-18 15:04:39 +00:00
.elp.toml Add configuration for ELP language server 2024-05-16 11:10:40 +02:00
.git-blame-ignore-revs Add #13008 to .git-blame-ignore-revs 2025-01-02 12:08:04 -05:00
.gitignore Adds rabbit_auth_backend_internal_loopback 2025-04-27 08:58:57 +00:00
.mailmap Add .mailmap file 2023-11-03 13:17:30 +01:00
CODE_OF_CONDUCT.md Replace @rabbitmq.com addresses with rabbitmq-core@groups.vmware.com 2023-06-20 15:40:13 +04:00
COMMUNITY_SUPPORT.md Update COMMUNITY_SUPPORT.md 2024-12-03 11:03:34 -05:00
CONTRIBUTING.md Document RABBITMQ_METADATA_STORE in CONTRIBUTING.md 2024-12-19 17:40:34 -05:00
LICENSE Replace @rabbitmq.com addresses with rabbitmq-core@groups.vmware.com 2023-06-20 15:40:13 +04:00
LICENSE-APACHE2 (c) year bumps 2024-01-01 22:02:20 -05:00
LICENSE-MPL-RabbitMQ Revert drop of Exhibit B on MPL 2.0 2020-07-20 17:03:37 +01:00
Makefile Adds rabbit_auth_backend_internal_loopback 2025-04-27 08:58:57 +00:00
PKG_LINUX.md URL Cleanup 2019-03-20 03:22:38 -05:00
PKG_WINDOWS.md Windows doc tweaks 2018-11-08 13:48:46 -08:00
README.md Support AMQP over WebSocket (OSS part) 2025-01-27 17:50:47 +01:00
SERVER_RELEASES.md Update SERVER_RELEASES.md 2025-02-11 16:10:35 -05:00
erlang.mk Update Erlang.mk 2025-03-25 21:40:30 +00:00
erlang_ls.config erlang_ls: Add 'deps/*/' to include dirs 2024-04-12 09:49:34 -04:00
plugins.mk Adds rabbit_auth_backend_internal_loopback 2025-04-27 08:58:57 +00:00
rabbitmq-components.mk Bump Ra to 2.16.9 2025-05-19 04:12:24 +00:00
rebar.config Revert "Format MQTT code with `erlfmt`" 2023-01-27 18:25:57 +00:00

README.md

Test

RabbitMQ Server

RabbitMQ is a feature rich, multi-protocol messaging and streaming broker. It supports:

Installation

Tutorials and Documentation

Some key doc guides include

RabbitMQ documentation is also developed on GitHub.

Commercial Features and Support

Getting Help from the Community

Please read the Community Support Eligibility Policy document first.

The recommended community forums are

Contributing

See CONTRIBUTING.md and our development process overview.

Questions about contributing, internals and so on are very welcome in GitHub Discussions or community Discord server in the core-and-plugin-dev channel.

Licensing

RabbitMQ server is licensed under the MPL 2.0.

Community Support Eligibility Policy document explains the open source RabbitMQ support policy adopted by the RabbitMQ Core Team.

Building From Source and Packaging

(c) 2007-2025 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.