summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Fix many Dialyzer warningsLoïc Hoguin2019-02-0513-34/+50
|
* test/unit_inbroker_dead_letter_SUITE.erl -> test/dead_lettering_SUITE.erlMichael Klishin2019-02-051-1/+1
| | | | | Per discussion with @dcorbacho. Those are not unit tests as they use Erlang client connections and manage nodes.
* Merge pull request #1867 from rabbitmq/publisher-confirms-testingMichael Klishin2019-02-053-103/+381
|\ | | | | Publisher confirms test suite for all queue types
| * DittoMichael Klishin2019-02-051-1/+1
| |
| * Give the recovering node more time to start hereMichael Klishin2019-02-051-2/+2
| | | | | | | | It can take twice as long in CI containers.
| * Rename test suiteDiana Corbacho2019-02-051-1/+1
| |
| * Merge branch 'master' into publisher-confirms-testingMichael Klishin2019-02-052-7/+22
| |\ | |/ |/|
* | Merge pull request #1866 from rabbitmq/qq-log-formattingMichael Klishin2019-02-052-7/+22
|\ \ | | | | | | Use friendly name for Ra logs
| * | Use friendly name for Ra logskjnilsson2019-02-052-7/+22
|/ / | | | | | | [#163724857]
| * Publisher confirms test suite for all queue typesDiana Corbacho2019-02-053-103/+381
|/ | | | | Some tests have been moved from another suites to here and made generic. New tests.
* gm_SUITE: Increase receive timeout from 1 to 5 secondsJean-Sébastien Pédron2019-02-041-1/+1
| | | | Hopefully it will reduce the number of transient failures.
* rabbit: Load plugins and init feature flags before we check cluster consistencyJean-Sébastien Pédron2019-02-041-5/+18
| | | | | | | | This is required because the feature flags (which depend on loaded plugins) must be known so we can compare them to remote nodes' feature flags. [#160169569]
* Merge pull request #1861 from rabbitmq/lrb-issue-template-revisionMichael Klishin2019-02-041-7/+13
|\ | | | | Remove markdown formatting
| * Remove markdown formattingLuke Bakken2019-02-031-7/+13
|/ | | | The GitHub issue template is not rendered as markdown but is just plain text filling the input text field. It should be a little easier to read without the markdown links.
* Merge pull request #1860 from rabbitmq/lrb-shorter-issue-templateMichael Klishin2019-02-022-42/+14
|\ | | | | Make the GitHub issue template shorter and more to the point
| * While at it, update the PR template as wellMichael Klishin2019-02-021-4/+4
| |
| * WordingMichael Klishin2019-02-021-9/+9
| |
| * fix template because variable-width font is usedLuke Bakken2019-02-021-5/+3
| |
| * Make the GitHub issue template shorter and more to the pointLuke Bakken2019-02-021-38/+12
|/
* Merge pull request #1857 from rabbitmq/rabbit-fifo-snapshotting-fixMichael Klishin2019-02-013-152/+116
|\ | | | | Rabbit fifo snapshotting improvements
| * rabbit_fifo_prop_SUITE: remove some dead code, ct:pal/2 only errorsMichael Klishin2019-02-011-7/+1
| |
| * Merge branch 'master' into rabbit-fifo-snapshotting-fixMichael Klishin2019-02-01122-2130/+9060
| |\ | |/ |/|
* | Merge pull request #1858 from rabbitmq/dead-letter-testingMichael Klishin2019-02-015-36/+1186
|\ \ | | | | | | Dead letter testing
| * \ Merge branch 'master' into dead-letter-testingMichael Klishin2019-02-01117-2090/+7868
| |\ \ | |/ / |/| | | | | | | | Conflicts: src/rabbit_quorum_queue.erl
* | | Merge pull request #1818 from rabbitmq/backward-compatible-amqqueueJean-Sébastien Pédron2019-02-01117-2089/+7867
|\ \ \ | | | | | | | | Feature flags support + make #amqqueue{} private
| * | | rabbit_binding: Small style improvementsJean-Sébastien Pédron2019-02-011-3/+3
| | | |
| * | | Use the new try/catch syntax to get the stacktrace in several testsuitesJean-Sébastien Pédron2019-02-013-9/+12
| | | | | | | | | | | | | | | | | | | | This fixes a warning about `erlang:get_stacktrace()` deprecation by Erlang 21 compiler.
| * | | Fix errors reported by DialyzerJean-Sébastien Pédron2019-02-0113-134/+190
| | | |
| * | | 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]
| * | Minor comment editsMichael Klishin2019-02-011-9/+9
| | |
| * | Trailing whitespaceMichael Klishin2019-02-011-18/+16
| | |
| * | Use queue name instead of ra name to query messages metricDiana Corbacho2019-02-011-1/+1
| | |
| * | Reject quorum queue messages with reason maxlen on drop-headDiana Corbacho2019-02-011-5/+5
| | | | | | | | | | | | As specified for RMQ ttl
| * | Test suite for dead letter: classic, mirrored and quorum queuesDiana Corbacho2019-02-013-29/+1181
|/ / | | | | | | | | All queue types must exhibit the same behaviour, apart from non implemented features in quorum queues
* | Merge pull request #1856 from rabbitmq/ra-loggerMichael Klishin2019-01-311-0/+3
|\ \ | | | | | | Configure Ra to log using lager
* | | 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.
| | * Ensure rabbit_fifo snaphots are emittedkjnilsson2019-02-013-149/+119
| |/ | | | | | | | | | | | | More regularly. Previously if more than one message was settled at a time, stored potential snapshots could have been missed. [#163631659]
| * move ra logging shimkjnilsson2019-01-301-25/+0
| |
| * Configure Ra to log using lagerkjnilsson2019-01-302-0/+28
|/ | | | [#163518117]
* Merge pull request #1849 from rabbitmq/basic_get_message_ready_countMichael Klishin2019-01-294-51/+65
|\ | | | | Fix basic get message ready count