Go to file
Michael Davis ea2da2d32d
rabbit_feature_flags: Inject test feature flags atomically
`rabbit_feature_flags:inject_test_feature_flags/2` could discard flags
from the persistent term because the read and write to the persistent
term were not atomic. `feature_flags_SUITE:registry_concurrent_reloads/1`
spawns many processes to modify the feature flag registry concurrently
but also updates this persistent term concurrently. The processes would
race so that many would read the initial flags, add their flag and write
that state, discarding any flags that had been written in the meantime.

We can add a lock around changes to the persistent term to make the
changes atomic.

Non-atomic updates to the persistent term caused unexpected behavior in
the `registry_concurrent_reloads/1` case previously. The
`PT_TESTSUITE_ATTRS` persistent_term only ended up containing a few of
the desired feature flags (for example only `ff_02` and `ff_06` along
with the base `ff_a` and `ff_b`). The case did not fail because the
registry continued to make progress towards that set of feature flags.
However the test case never reached the "all feature flags appeared"
state of the spammer and so the new assertion added at the end of the
case in this commit would fail.
2024-06-05 11:26:41 -04:00
.github Setup erlang for the gazelle workflow 2024-05-17 11:21:42 +02:00
bazel Remove +warnings_as_errors from the jose compilation options 2024-06-04 16:13:06 +02:00
deps rabbit_feature_flags: Inject test feature flags atomically 2024-06-05 11:26:41 -04:00
doc Add files to specify license info 2020-08-18 12:42:43 -07:00
mk Use rules_erlang v2 2022-01-18 13:43:46 +01:00
packaging Use the latest OTP in the dev OCIs 2024-05-16 20:17:35 +02:00
release-notes Update 3.13.3 release notes 2024-05-31 03:54:42 -04:00
scripts More missed license header updates #9969 2024-02-05 11:53:50 -05:00
tools bazel: Remove committed files from //tools:symlink_deps_for_erlang_ls 2024-04-12 10:37:53 -04:00
.bazelignore Add "bazel run //tools:symlink_deps_for_erlang_ls" 2023-01-05 13:02:02 +01:00
.bazelrc Remove rules_docker in favor of rules_oci (#10869) 2024-04-02 19:04:38 +02:00
.bazelversion Unpin bazel version 2024-03-20 16:21:10 +01: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 Ignore in git blame 2024-05-23 16:37:16 +02:00
.gitignore Enable AMQP 1.0 clients to manage topologies 2024-03-28 11:36:56 +01:00
.mailmap Add .mailmap file 2023-11-03 13:17:30 +01:00
BAZEL.md Clean up moduleindex.yaml by regenerating it 2024-02-20 11:11:33 +01:00
BUILD.bats Fixup the bazel build when used without bzlmod 2022-06-15 11:18:41 +02:00
BUILD.bazel Remove rules_docker in favor of rules_oci (#10869) 2024-04-02 19:04:38 +02:00
BUILD.package_generic_unix Synchronize mixed versions approach with v3.8.x 2021-09-09 13:50:22 +02: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-05-01 12:14:04 -04:00
CONTRIBUTING.md Update CONTRIBUTING.md to mention Bazel 2023-04-27 13:39:15 +04: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
MODULE.bazel Switch to upstream Jose 2024-06-03 08:51:38 +02:00
Makefile Fix some dialyzer build system errors in make (#11014) 2024-04-16 13:26:51 +02: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 More README link updates 2024-05-01 12:29:22 -04:00
SERVER_RELEASES.md The standalone macOS package is long gone 2024-01-05 13:11:56 -05:00
WORKSPACE Adopt otp 26.2.5 2024-05-16 15:15:32 +00:00
dist.bzl Revert "Remove Elixir json dep in a few more places #9926" 2023-11-17 13:08:26 +01:00
erlang.mk Update Erlang.mk 2023-07-17 11:12:25 +02:00
erlang_ls.config erlang_ls: Add 'deps/*/' to include dirs 2024-04-12 09:49:34 -04:00
moduleindex.yaml bazel run gazelle-update-repos -- hex.pm/jose@1.11.10 2024-06-03 08:51:39 +02:00
plugins.mk Remove duplicate rabbitmq_auth_backend_http in plugins.mk 2024-04-26 17:13:57 +02:00
rabbitmq-components.mk Switch to upstream Jose 2024-06-03 08:51:38 +02:00
rabbitmq.bzl Require feature flag message_containers 2024-04-04 15:11:31 +02:00
rabbitmq_home.bzl Add a workflow to compare the bazel/erlang.mk output 2023-05-15 13:54:14 +02:00
rabbitmq_package_generic_unix.bzl Synchronize mixed versions approach with v3.8.x 2021-09-09 13:50:22 +02:00
rabbitmq_run.bzl Add Bazel targets start-cluster and stop-cluster 2022-07-04 13:54:26 +00:00
rabbitmqctl.bzl Fix shell quoting in bazel rabbitmqctl helper 2023-02-01 16:40:36 +01:00
rebar.config Revert "Format MQTT code with `erlfmt`" 2023-01-27 18:25:57 +00:00
user-template.bazelrc Adjust strategy flags for bazel 2023-11-06 10:08:24 +01: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-2024 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.