summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Move plugin rabbitmq-message-timestamp to the coreDavid Ansari2023-05-1511-15/+293
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As reported in https://groups.google.com/g/rabbitmq-users/c/x8ACs4dBlkI/ plugins that implement rabbit_channel_interceptor break with Native MQTT in 3.12 because Native MQTT does not use rabbit_channel anymore. Specifically, these plugins don't work anymore in 3.12 when sending a message from an MQTT publisher to an AMQP 0.9.1 consumer. Two of these plugins are https://github.com/rabbitmq/rabbitmq-message-timestamp and https://github.com/rabbitmq/rabbitmq-routing-node-stamp This commit moves both plugins into rabbitmq-server. Therefore, these plugins are deprecated starting in 3.12. Instead of using these plugins, the user gets the same behaviour by configuring rabbitmq.conf as follows: ``` incoming_message_interceptors.set_header_timestamp.overwrite = false incoming_message_interceptors.set_header_routing_node.overwrite = false ``` While both plugins were incompatible to be used together, this commit allows setting both headers. We name the top level configuration key `incoming_message_interceptors` because only incoming messages are intercepted. Currently, only `set_header_timestamp` and `set_header_routing_node` are supported. (We might support more in the future.) Both can set `overwrite` to `false` or `true`. The meaning of `overwrite` is the same as documented in https://github.com/rabbitmq/rabbitmq-message-timestamp#always-overwrite-timestamps i.e. whether headers should be overwritten if they are already present in the message. Both `set_header_timestamp` and `set_header_routing_node` behave exactly to plugins `rabbitmq-message-timestamp` and `rabbitmq-routing-node-stamp`, respectively. Upon node boot, the configuration is put into persistent_term to not cause any performance penalty in the default case where these settings are disabled. The channel and MQTT connection process will intercept incoming messages and - if configured - add the desired AMQP 0.9.1 headers. For now, this allows using Native MQTT in 3.12 with the old plugins behaviour. In the future, once "message containers" are implemented, we can think about more generic message interceptors where plugins can be written to modify arbitrary headers or message contents for various protocols. Likewise, in the future, once MQTT 5.0 is implemented, we can think about an MQTT connection interceptor which could function similar to a `rabbit_channel_interceptor` allowing to modify any MQTT packet.
* Merge pull request #8166 from rabbitmq/bump-otp-25.2Michael Klishin2023-05-130-0/+0
|\ | | | | Adopt otp 25.2.3
| * Adopt otp 25.2.3GitHub2023-05-131-1/+1
| |
* | Merge pull request #8165 from rabbitmq/bump-otp-25.1Michael Klishin2023-05-130-0/+0
|\ \ | | | | | | Adopt otp 25.1.2.1
| * | Adopt otp 25.1.2.1GitHub2023-05-131-1/+1
| |/
* | Merge pull request #8164 from rabbitmq/bump-otp-25.0Michael Klishin2023-05-130-0/+0
|\ \ | | | | | | Adopt otp 25.0.4
| * | Adopt otp 25.0.4GitHub2023-05-131-1/+1
| |/
* | Merge pull request #8167 from rabbitmq/bump-otp-25.3Michael Klishin2023-05-131-1/+1
|\ \ | | | | | | Adopt otp 25.3.2
| * | Adopt otp 25.3.2GitHub2023-05-131-1/+1
| |/
* | Merge pull request #8169 from rabbitmq/gazelle-mainMichael Klishin2023-05-131-8/+8
|\ \ | |/ |/| Adopt otp
| * bazel run gazelleGitHub2023-05-131-8/+8
|/
* Merge pull request #8160 from rabbitmq/mk-3.11.16-release-notesMichael Klishin2023-05-121-0/+92
|\ | | | | 3.11.16 release notes
| * 3.11.16 release notes updatesMichael Klishin2023-05-121-2/+2
| |
| * 3.11.16 release notesMichael Klishin2023-05-121-0/+92
|/
* Merge pull request #8156 from rabbitmq/mk-gazelle-update-reposMichael Klishin2023-05-121-51/+19
|\ | | | | bazel run gazelle-update-repos for Ra 2.6
| * bazel run gazelle-update-repos for Ra 2.6Michael Klishin2023-05-121-51/+19
| |
* | Merge pull request #8148 from rabbitmq/rin/rabbitmq_cli-dialyze-enhancementsRin Kuryloski2023-05-1213-53/+144
|\ \ | |/ |/| rabbitmq_cli dialyze enhancements
| * Update rules_pkg to 0.9.1Rin Kuryloski2023-05-124-3/+16
| |
| * Fix github actions cache key for the bazel repo-cacheRin Kuryloski2023-05-123-5/+15
| |
| * Use rules_erlang 3.10.0Rin Kuryloski2023-05-122-16/+16
| |
| * Account for Elixir containing several core applicationsRin Kuryloski2023-05-123-3/+24
| | | | | | | | | | | | | | | | | | | | | | | | - eex - elixir - ex_unit - iex - logger - mix So that apps (like rabbitmq_cli) can dialyze against the extra components
| * Pass csv and json to rabbitmq_cli pltRin Kuryloski2023-05-121-0/+5
| | | | | | | | | | So that they are no longer reported as unknown in //deps/rabbitmq_cli:dialyze
| * Build cli deps as .ez archivesRin Kuryloski2023-05-124-26/+68
|/ | | | | This provides an elixir/erlang agnostic way of providing them other erlang rules
* Merge pull request #8145 from rabbitmq/mk-update-3.12.0-release-notesMichael Klishin2023-05-121-2/+4
|\ | | | | Update 3.12.0 release notes
| * Update 3.12.0 release notesMichael Klishin2023-05-121-2/+4
| |
* | Merge pull request #8143 from rabbitmq/mk-ra-2.6.0Michael Klishin2023-05-122-3/+3
|\ \ | |/ |/| Pin Ra to 2.6.1
| * Pin Ra to 2.6.1Michael Klishin2023-05-122-3/+3
| |
| * Pin Ra to 2.6.0-pre.1Michael Klishin2023-05-112-3/+3
|/
* Merge pull request #8140 from rabbitmq/synchronise-before-membership-changesMichael Klishin2023-05-111-15/+17
|\ | | | | Synchronise feature flags before any changes to Mnesia membership
| * Synchronise feature flags before any changes to Mnesia membershipDiana Parra Corbacho2023-05-111-15/+17
|/ | | | | | | | Left as it was, a failure enabling the feature flags leaves the cluster in an inconsistent state where the joined nodes think the joining node is already a member, but the joining node believes its a standalone node. Thus, later join_cluster commands fail with an inconsistent cluster error.
* Merge pull request #8130 from rabbitmq/rabbitmq-server-8129Luke Bakken2023-05-102-11/+19
|\ | | | | Correctly use AMQP URI query parameter `password`
| * Correctly use AMQP URI query parameter `password`Luke Bakken2023-05-102-11/+19
|/ | | | | | | | | | | | | | | Fixes #8129 The query parameter `password` in an AMQP URI should only be used to set a certificate password, *not* the login password. The login password is set via the `amqp_authority` section as defined here - https://www.rabbitmq.com/uri-spec.html * Add test that demonstrates issue in #8129 * Modify code to fix test Modify amqp_uri so that test passes
* Merge pull request #8112 from ↵Jean-Sébastien Pédron2023-05-092-5/+53
|\ | | | | | | | | rabbitmq/fix-feature-flags-init-vs-code_server-deadlock rabbit_feature_flags: Fix possible deadlock when calling the Code server
| * rabbit_feature_flags: Fix possible deadlock when calling the Code serverJean-Sébastien Pédron2023-05-092-5/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [Why] The Feature flags registry is implemented as a module called `rabbit_ff_registry` recompiled and reloaded at runtime. There is a copy on disk which is a stub responsible for triggering the first initialization of the real registry and please Dialyzer. Once the initialization is done, this stub calls `rabbit_ff_registry` again to get an actual return value. This is kind of recursive: the on-disk `rabbit_ff_registry` copy calls the `rabbit_ff_registry` copy generated at runtime. Early during RabbitMQ startup, there could be multiple processes indirectly calling `rabbit_ff_registry` and possibly triggering that first initialization concurrently. Unfortunately, there is a slight chance of race condition and deadlock: 0. No `rabbit_ff_registry` is loaded yet. 1. Both process A and B call `rabbit_ff_registry:something()` indirectly which triggers two initializations in parallel. 2. Process A acquires the lock first and finishes the initialization. A new registry is loaded and the old `rabbit_ff_registry` module copy is marked as "old". At this point, process B still references that old copy because `rabbit_ff_registry:something()` is up above in its call stack. 3. Process B acquires the lock, prepares the new registry and tries to soft-purge the old `rabbit_ff_registry` copy before loading the new one. This is where the deadlock happens: process B requests the Code server to purge the old copy, but the Code server waits for process B to stop using it. [How] With this commit, process B calls `erlang:check_process_code/2` before asking for a soft purge. If it is using an old copy, it skips the purge because it will deadlock anyway.
* | Try elixir 1.14.3 for Windows testsMichal Kuratczyk2023-05-091-1/+1
|/ | | | | Debugging a setup-beam issue: https://github.com/erlef/setup-beam/issues/189
* Merge pull request #8123 from rabbitmq/SimonUnge-shrink_on_node_cleanupMichael Klishin2023-05-071-1/+5
|\ | | | | Peer discovery: shrink QQ replicas on forced node removal
| * Pass DialyzerMichael Klishin2023-05-071-7/+5
| |
| * Intentionally ignore return value hereMichael Klishin2023-05-071-1/+1
| | | | | | | | the node is being removed
| * WordingMichael Klishin2023-05-071-1/+1
| |
| * See #2882. Also call quorum shrink commandSimon Unge2023-05-071-1/+7
|/
* Merge pull request #8115 from rabbitmq/bump-otp-25.3Michael Klishin2023-05-062-7/+7
|\ | | | | Adopt otp 25.3.2
| * Adopt otp 25.3.2GitHub2023-05-062-7/+7
| |
* | Merge pull request #8102 from rabbitmq/prometheus-tcp-listener-noneMichael Klishin2023-05-065-43/+79
|\ \ | |/ |/| Support TLS-only listener for Prometheus
| * Prometheus: handle scenarios when no listener is configuredMichael Klishin2023-05-061-5/+27
| | | | | | | | Start a plain TCP one with all defaults.
| * Support TLS-only listener for PrometheusChunyi Lyu2023-05-055-45/+59
|/ | | | | | - tcp listener can be turned off by setting 'prometheus.tcp.listener = none' - config schema follows web_mqtt and web_stomp
* Merge pull request #8106 from rabbitmq/mk-bazel-run-gazelleMichael Klishin2023-05-051-1/+0
|\ | | | | bazel run gazelle
| * bazel run gazelleMichael Klishin2023-05-051-1/+0
| |
* | Merge pull request #8103 from rabbitmq/mk-bump-osiris-to-1.5.1Michael Klishin2023-05-052-2/+2
|\ \ | |/ |/| Bump Osiris to 1.5.1
| * Bump Osiris to 1.5.1Michael Klishin2023-05-052-2/+2
| |
* | Merge pull request #8098 from rabbitmq/mqtt-connection-closed-eventMichael Klishin2023-05-055-31/+26
|\ \ | |/ |/| Add MQTT client id to connection closed event