summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Move `-spec()` near their functionJean-Sébastien Pédron2019-02-0171-1145/+1730
|
* Restore `mandatory_received` message handlingJean-Sébastien Pédron2019-02-013-2/+40
| | | | | | | | | | | The message is also sent from `rabbit_amqqueue_process` and `rabbit_mirror_queue_slave` to avoid a leak of mandatory references in 3.7.x channels. For 3.8.x channels, this will be a no-op. This is just to make the node compatible with a 3.7.x cluster. This message is unused in 3.8.x and marked as deprecated. [#163222515,#159298729]
* Restore the `rabbit:force_refresh_event()` featureJean-Sébastien Pédron2019-02-017-5/+86
| | | | | | | This is just to make the node compatible with a 3.7.x cluster. All involved functions are marked as deprecated. [#159298729]
* Convert explicit default bindings removal to a feature flagJean-Sébastien Pédron2019-02-013-25/+52
| | | | | | | | | | | | | | The feature flag is called `implicit_default_bindings`. It has the same role as the previously existing upgrade function. The upgrade function is removed in the process. Compared to the upgrade function however, it does remove entries in the `rabbit_route`, `rabbit_reverse_route` and `rabbit_semi_durable_route` tables in addition to `rabbit_durable_route` table. Also, the list of queues is taken from the `rabbit_queue` table instead of the `rabbit_durable_queue` one. [#163224049,#159298729]
* Handle races with quorum_queue feature flag migration funJean-Sébastien Pédron2019-02-017-12/+134
| | | | | | | | In a few places, the migration of the `rabbit_queue` and `rabbit_durable_queue` Mnesia tables might conflict with accesses to those tables. [#159298729]
* Make #amqqueue{} a private record + add a feature flagJean-Sébastien Pédron2019-02-0146-858/+3022
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The #amqqueue{} record is now isolated in the `amqqueue` module: all accesses and modifications to the record are made through this helper. The type `rabbit_types:amqqueue()` is now `amqqueue:amqqueue()`. `amqqueue` knows about the new #amqqueue{} record introduced with quorum queues. If the actual record is the old one (as defined in RabbitMQ 3.7.x), it calls `amqqueue_v1` which knows about the old definition. When it needs to produce an #amqqueue{} record, it verifies if it is allowed to, using the new Feature flags subsystem and the `quorum_queue` feature flag specifically, and proceeds. If an old format #amqqueue{} is required, the creation is deferred to `amqqueue_v1`. The new modules come with a couple headers: they provide macros to replace pattern matching with `when` conditions. The `amqqueue_v*.hrl` headers are generated using the `macros()` functions in `amqqueue` and `amqqueue_v1` modules. Some operations now depend on the state of the `quorum_queue` feature flag. In particular, creating a quorum queue is denied if the feature flag is disabled. In the process, the following modules were moved from rabbitmq-common to rabbitmq-server: * rabbit_backing_queue * rabbit_queue_master_locator Likewise, the few functions were copied from `rabbit_misc` to `rabbit_amqqueue` because they depend on `amqqueue`. They don't really need to live in rabbitmq-common and they prevent further progress with the feature flags: feature flags need informations about the cluster. The `quorum_queue` feature flag comes with a migration function which is responsible of converting the #amqqueue{} records in Mnesia tables `rabbit_queue` and `rabbit_durable_queue`. Therefore, the upgrade function which did this is removed in this commit. [#159298729]
* rabbit_plugins: Use `rabbit_misc:strict_version_minor_equivalent()` to check ↵Jean-Sébastien Pédron2019-02-011-1/+2
| | | | | | | | | | | | | | compatibility That new function has the behavior that `version_minor_equivalent()` had before: it considers 3.7.x and 3.8.x as incompatible. This is useful for plugins because the feature flags subsystem only applies to inter-node compatibility, not plugins. Therefore a plugin marked as compatible with 3.7.x should not be considered as compatible with 3.8.x. [#159298729]
* New "Feature flags" subsystem to ease upgrades with breaking changesJean-Sébastien Pédron2019-02-0117-41/+2742
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The goal is that each breaking change is implemented in way that a RabbitMQ node having that change can work in the same cluster as other nodes which do not know about it. The feature flags are here to indicate which breaking changes are "available" (i.e. the node knows about the breaking changes, but it still runs in a backward-compatible mode) and which ones are currently activated (i.e. the node uses the new code and older node can not be part of the cluster anymore). Enabling a feature flag (i.e. activating a breaking change) is a manual operation where the user validates that the cluster is ready to switch to the new world after the breaking change. Therefore the subsystem ensures RabbitMQ nodes can talk to each other even if they don't have the same code as long as they agree on using the common subset, and prevents RabbitMQ nodes from talking to each other once the new code is being used and one node does not understand it. The consequence is that if a breaking change is implemented using this new subsystem, a cluster can be upgraded one node at a time instead of shutting down the entire cluster to upgrade. Of course, the ability to implement a breaking change in such a way entirely depends on the nature of that change. This new subsystem does not guarantee that a cluster shutdown will never be required again. [#159298729]
* Merge pull request #1856 from rabbitmq/ra-loggerMichael Klishin2019-01-311-0/+3
|\ | | | | Configure Ra to log using lager
| * move ra logging shimkjnilsson2019-01-301-25/+0
| |
| * Configure Ra to log using lagerkjnilsson2019-01-302-0/+28
| | | | | | | | [#163518117]
* | Adapt man page styling for recent website CSS changesMichael Klishin2019-01-313-4/+4
| |
* | rabbitmqctl(8): correct a referenceMichael Klishin2019-01-311-1/+3
| |
* | Merge pull request #1854 from rabbitmq/lrb-disable-large-heap-sysmon-msgsv3.8.0-beta.2Michael Klishin2019-01-301-1/+1
|\ \ | |/ |/| Disable large heap sysmon messages
| * Disable large heap sysmon messagesLuke Bakken2019-01-291-1/+1
|/ | | | I like large heaps and I can not lie.
* Merge pull request #1849 from rabbitmq/basic_get_message_ready_countMichael Klishin2019-01-294-51/+65
|\ | | | | Fix basic get message ready count
| * Fix basic get message ready countkjnilsson2019-01-284-51/+65
| | | | | | | | | | | | | | Ensure the messages is ready is returned from basic get. Also fix message count when using basic.delete. [#162502929]
* | Merge pull request #1851 from rabbitmq/rabbitmq-server-1850Michael Klishin2019-01-291-31/+1
|\ \ | | | | | | Remove code that sets syslog listen IP
| * | Remove code that sets syslog listen IPLuke Bakken2019-01-281-31/+1
|/ / | | | | | | Fixes #1850
* | Merge pull request #1848 from rabbitmq/await_startup_with_a_timeoutMichael Klishin2019-01-281-18/+78
|\ \ | | | | | | Introduce a function that awaits startup with a timeout
| * | SpacingMichael Klishin2019-01-281-1/+1
| | |
| * | Reintroduce the comment added in b0dd88351314cb4e0afca79cafa6bf315b42cbeeMichael Klishin2019-01-281-0/+1
| | |
| * | rabbit:await_startup: progress reportingMichael Klishin2019-01-281-26/+35
| | | | | | | | | | | | Pair: @gerhard.
| * | await_startup: use default timeouts in ms, namingMichael Klishin2019-01-281-9/+14
| | | | | | | | | | | | | | | | | | Per #1848 review. Pair @gerhard.
| * | Add commentLuke Bakken2019-01-281-0/+1
| | | | | | | | | BOOT_STATUS_SAMPLING_INTERVAL is in ms
| * | rabbit:await_startup/{0,1,2}: move spec definitions to definitionMichael Klishin2019-01-281-4/+7
| | |
| * | rabbit:await_startup/2: correct type specMichael Klishin2019-01-281-1/+1
| | |
| * | Introduce rabbit:await_startup/2Michael Klishin2019-01-251-14/+55
| | | | | | | | | | | | Which supports a timeout.
* | | Merge pull request #1839 from ↵Daniil Fedotov2019-01-288-93/+283
|\ \ \ | |_|/ |/| | | | | | | | rabbitmq/rabbitmq-server-1838-active-field-for-consumers Update active flag for consumers
| * | Merge branch 'master' into rabbitmq-server-1838-active-field-for-consumersArnaud Cogoluègnes2019-01-2520-549/+1054
| |\ \ | |/ / |/| | | | | | | | Conflicts: src/rabbit_fifo.erl
* | | Merge pull request #1834 from rabbitmq/qq-queue-length-drop-headMichael Klishin2019-01-258-364/+766
|\ \ \ | |_|/ |/| | Queue length limit by byte size and number of messages (Drop head only)
| * | Ensure purge clears out returned messageskjnilsson2019-01-251-7/+9
| | | | | | | | | | | | | | | | | | Fixes bug introduced with queue limit changes. [#161247380]
| * | Merge branch 'master' into qq-queue-length-drop-headMichael Klishin2019-01-2511-173/+273
| |\ \ | |/ / |/| |
* | | rabbitmq-plugins.8: document more flags, link to the relevant doc guideMichael Klishin2019-01-252-17/+82
| | |
* | | Man page edits and updatesMichael Klishin2019-01-256-141/+167
| | | | | | | | | | | | | | | | | | | | | * Clarifications, less obscure or Erlang-centric language * Link to relevant doc guides * Prefer "mirror" or "follower" over "slave" * Reduce the number or archaic versions mentioned
* | | Man pages: update datesMichael Klishin2019-01-254-4/+4
| | | | | | | | | | | | [ci skip]
* | | backing_queue_SUITE:: Move `get_queue_sup_pid()` from rabbitmq-ct-helpersJean-Sébastien Pédron2019-01-241-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | This is the only place this function is used and this removes a dependency cycle: rabbit_ct_broker_helpers can't depend on the broker: the broker already depends on it as a test dependency. [#159298729]
* | | dynamic_qq_SUITE: "force delete" was implemented, remove the TODOJean-Sébastien Pédron2019-01-241-1/+0
| | |
* | | Fix dynamic_qq test expectationkjnilsson2019-01-241-3/+2
| | | | | | | | | | | | | | | Now that force delete of queue is implemented the test assertion neede updating.
* | | Merge pull request #1845 from rabbitmq/rabbitmq-server-1843-always-copy-schemaMichael Klishin2019-01-243-9/+3
|\ \ \ | | | | | | | | Always copy rabbit.schema file
| * | | Always copy rabbit.schema fileLuke Bakken2019-01-233-9/+3
|/ / / | | | | | | | | | Fixes #1843
| * | remove a few stale TODOskjnilsson2019-01-251-5/+1
| | |
| * | tidy upkjnilsson2019-01-242-17/+0
| | |
| * | Quorum queue queue length limit by byte size and number of messagesDiana Corbacho2019-01-249-344/+764
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | Only drop-head strategy. This necessitated the change of rabbit_fifo prefix messages from a tuple of integers representing the number of returned vs enqueued messages that have already been processes and thus don't need to include message bodes in the snapshot to a tuple of lists of the sizes of each message. This change will have some performance impact as the snaphots will now be larger than before but as they still won't contain message bodies at least the sizing is fixed. Decreased the frequency as snapshots points are prepared so somewhat make up for this. [#161247380]
* | Introduce rabbit:is_booted/0, is_booting/0Michael Klishin2019-01-201-1/+5
| | | | | | | | References rabbitmq/rabbitmq-cli#292.
* | Export rabbit:is_booting/1Michael Klishin2019-01-201-1/+1
| | | | | | | | | | | | | | | | It joins the club of is_booted/1 and is_running/{0, 1}. This allows for a CLI command that checks if the node is still botting. References rabbitmq/rabbitmq-cli#292.
| * Add consumer activity status to metricsArnaud Cogoluègnes2019-01-245-34/+38
| | | | | | | | | | | | [#163298456] Fixes #1838
| * Return active and activity status when listing consumersArnaud Cogoluègnes2019-01-215-37/+138
| | | | | | | | | | | | [#163298456] Fixes #1838
| * Merge branch 'master' into rabbitmq-server-1838-active-field-for-consumersArnaud Cogoluègnes2019-01-181-98/+137
| |\ | |/ |/| | | | | Conflicts: src/rabbit_fifo.erl
* | rabbit_fifo: refactoringkjnilsson2019-01-171-99/+138
| | | | | | | | | | | | Light refactoring Shortening some lines for the benefit of split buffer users.