| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
... in `rebalance_multiple_blocked`.
The testcase wants two rebalances to happen at the same time: the first
one may succeed (but this is out of scope for this testcase) and the
second one must be aborted with `{error, rebalance_in_progress}`.
It looks like things are faster with Erlang 23 because the first
rebalance is already finished when the second starts, probably due to
internode communication being slower than rebalance (the two rebalances
are triggered from the common_test node).
This time, the testcase starts a function on the remote node which
spawns two functions in parallel to request a rebalance. Everything
being local, we increase the chance to have concurrent rebalances.
We don't know the order of execution of the two functions, so we simply
verify that one of them fails.
This is still not 100% bullet proof, but should be ok.
|
|
|
|
|
|
|
|
| |
Add code to block multiple queue rebalance operations, fix test
Allow acquiring the rebalance lock prior to calling rabbit_amqqueue:rebalance
Simplify queue rebalance code to always acquire the lock using the current process
|
|
|
|
|
|
|
|
| |
Release cursors are taken less frequently the more messages there are on
queue. This changes how this is calculated to simply use the message
count rather than some multiple of the currently captured release
cursors. This is more consistent and doesn't depend on non snapshottable
state.
|
| |
|
|
|
|
| |
Especially max_length changes and tests the max_length invariant.
|
|
|
|
| |
References #2244.
|
| |
|
|
|
|
|
|
|
| |
Ensure release cursors are added to the end of the effects list rather
than the front as there may be effects such as log effects that require
log entries that may be truncated by the release cursor effect to be
present.
|
|
|
|
| |
References #2257.
|
| |
|
|
|
|
|
|
| |
and there is a delivery-limit in place.
Also fix rabbit_fifo tests.
|
|
|
|
|
|
| |
that would occur when dead-lettering a message that was not kept in
memory. At that point the dead lettering function failed as the message
had not be restored from the Ra log.
|
|\
| |
| | |
Split QQ remove member into two operations
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
To avoid not updating the amqqueue record if the server data delete part
failed but the Raft cluster was still updated. Also add a function to
repair the quorum queue queue type nodes in the amqqrecord if it should
diverge from what the Ra cluster thinks.
[#171434221]
|
|/
|
|
|
|
|
|
|
| |
When using dead letter handlers the state machine would crash when a
prefix_msg was being dead-lettered on recovery. This handles this case
and also fixes an issue where the incorrect initial release cursor
interval would have been set when overriding the release cursor default.
[#171463230]
|
| |
|
|
|
|
|
|
| |
See:
* commit 169eeeb426b1c71e5b4e81f8fa813cab9570247a
* commit 15dfe7b1bf63c6f6b9940738b219f08bcc241cbd
|
|
|
|
|
|
|
|
|
|
| |
The reading of `$NOTIFY_SOCKET` is also moved at the same time. This is
in preparation of the work around start/stop status.
There is an associated commit in rabbitmq-common to update `rabbit_env`
and record the origin of each variable.
[#170149339]
|
|
|
|
|
| |
As previous 3.7.x do not have the function the test relies on.
Note that the change is otherwise safe for them.
|
|
|
|
|
|
|
|
|
|
|
| |
That the operator cannot and are not supposed to control.
The ID is cluster-wide and stored as a global runtime parameter to make
sure it is replicated across all nodes.
It is intentionally excluded from imported definitions because it is not
meant to be reused.
This ID would be useful in several features/plugins under development.
|
|\
| |
| | |
Unsupported if_empty and if_unused flags for delete quorum queues
|
| |
| |
| |
| | |
[#167065717]
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Those plugins are created at runtime. We just need to populate the list
of `applications` they depend on. This list must include `rabbit`.
This will be even required once #rabbitmq/rabbitmq-server#2212 is
accepted.
|
| |
| |
| |
| |
| |
| | |
rabbit_shovel_test is not a plugin in fact.
This reverts commit 3cf8b6384a9986e227dac3552f1b4208731ed84a.
|
|/
|
|
|
|
|
| |
It should depend on `rabbit`.
This will be even required once #rabbitmq/rabbitmq-server#2212 is
accepted.
|
|\
| |
| | |
Filter policies that cannot be applied to quorum queues
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some policies, such as highly available, do not apply to all types of queues.
Even though quorum queues ignores some policies, they're still listed as
an applied policy on this type of queue. This commit ignores filters these
policies when applied, so they'll never be listed on the wrong type of queue.
[#169811193]
|
|\ \
| | |
| | | |
Autoheal: the "autoheal_safe_to_start" state transition is not guaranteed to arrive on time
|
| |/
| |
| |
| | |
In continuation to #2208.
|
|/ |
|
| |
|
|
|
|
| |
and won't pass in mixed version cluster tests.
|
| |
|
|
|
|
|
| |
We need to find another way to screw virtual host
recovery post-#2195.
|
|
|
|
| |
References #2182, rabbitmq/rabbitmq-common#343.
|
|
|
|
|
|
|
| |
This macro is used when the requested key always exists. If this is not
the case, `rabbit_ct_helpers:get_config()` should be used.
This fixes a warning reported by common_test.
|
|\
| |
| | |
Update rabbit_fifo with Ra aux changes
|
| | |
|
|/
|
|
|
| |
When testing mixed-versions clusters, we need to check what kind of node
is node B, because we may have to restart it differently.
|
|
|
|
| |
on both follower and leader nodes.
|
| |
|
|
|
|
|
|
| |
... and skip the testscases in case of an error.
Remove trailing whitespaces while here.
|
|
|
|
|
| |
Those log levels, coming from the process environment, take precedence
over whatever is configured.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A large part of the rabbitmq-server(8) and CLI scripts, both
Bourne-shell and Windows Batch versions, was moved to Erlang code and
the RabbitMQ startup procedure was reorganized to be closer to a regular
Erlang application.
A new application called `rabbitmq_prelaunch` is responsible for:
1. Querying the environment variables to initialize important
variables (using the new `rabbit_env` module in rabbitmq-common).
2. Checking the compatibility with the Erlang/OTP runtime.
3. Configuring Erlang distribution.
5. Writing the PID file.
The application is started early (i.e. it is started before `rabbit`).
The `rabbit` application runs the second half of the prelaunch sequence
at the beginning of the application `start()` function. This second
phase is responsible for the following steps:
1. Preparing the feature flags registry.
2. Reading and validating the configuration.
3. Configuring logging.
4. Running the various cluster checks.
In addition to this prelaunch sequence, the `rabbit` application start
procedure ends with a "postlaunch" sequence which takes care of
starting enabled plugins.
Thanks to this, RabbitMQ can be started with `application:start(rabbit)`
as any other Erlang application. The only caveats are:
* Mnesia must be stopped at the time `rabbit_prelaunch` is started,
and must remain stopped when `rabbit` is started, to allow the
Erlang distribution setup and cluster checks. `rabbit` takes care of
starting Mnesia.
* Likewise for Ra, because it relies on the `ra` application
environment to be configured.
Transitioning from scripts to Erlang code has the following benefits:
* RabbitMQ start behavior should be identical between Unix and
Windows. Also, features should be on par now. For instance, RabbitMQ
now writes a PID file on Windows, like it always did on Unix-based
systems.
* The difference between published packages and a development
environment are greatly reduced. In fact, we removed all the "if
this is a dev working copy, then ..." blocks.
As part of that, the `rabbit` application is now treated like its
plugins: it is packaged as an `.ez` archive and written to the
`plugins` directory (even though it is not technically a plugin).
Also in a development copy, the CLI is copied to the top-level
project. So when testing a plugin for instance, the CLI to use is
`sbin/rabbitmqctl` in the current directory, not the master copy in
`rabbit/scripts`.
* As a consequence of the previous two points, maintaining and testing
on Windows is now made easy. It should even be possible to setup CI
on Windows.
* There are less issues with paths containing non-US-ASCII characters,
which can happen on Windows because RabbitMQ stores its data in user
directories by default.
This process brings at least one more benefit: we now have early logging
during this prelaunch phase, which eases diagnostics and debugging.
There are also behavior changes:
* The new format configuration files used to be converted to an
Erlang-term-based file by the Cuttlefish CLI. To do that,
configuration schemas were copied to a temporary directory and the
generated configuration file was written to RabbitMQ data directory.
Now, Cuttlefish is used as a library: everything happens in memory.
No schemas are copied, no generated configuration is written to
disk.
* The PID file is removed when the Erlang VM exits.
* The `rabbit_config` module was trimmed significantly because most of
the configuration handling is done in `rabbit_prelaunch_conf` now.
* The RabbitMQ nodename does not appear on the command line, therefore
it is missing from ps(1) and top(1) output.
* The `rabbit:start()` function will probably behave differently in
some ways because it defers everything to the Erlang application
controller (instead of reimplementing it).
|
|
|
|
|
|
|
|
|
| |
If the supposedly non-writable directory is writable (e.g. we are
running the testsuite on Windows as Administrator), we skip this test.
On Unix, we now use `/` as the non-writable directory because
`/var/empty` may not exist. For instance, this is the case on Debian
Stretch AWS EC2 image.
|
|\
| |
| | |
Remove duplicated consumers metric in quorum queues
|
| |
| |
| |
| | |
yet updated
|