| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| |\
| |
| | |
rabbit_fifo: change release cursor calculation
|
| | |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |\
| |
| | |
signal_handling_SUITE: New testsuite to check the signal handlers behavior
|
| |/
|
|
| |
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.
|
| |\
| |
| | |
product_info_SUITE: New testsuite to check product name & version overrides
|
| |/
|
|
| |
References #2257.
|
| | |
|
| |\
| |
| | |
Take snapshots when messages are returned
|
| | |
| |
| |
| |
| |
| | |
and there is a delivery-limit in place.
Also fix rabbit_fifo tests.
|
| |\ \
| |/
| | |
Fix QQ dead letter crash
|
| |/
|
|
|
|
| |
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.
|
| |\
| |
| | |
Load additional Cuttlefish configuration files
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
By default, in addition to `$RABBITMQ_CONFIG_FILE`, we also load all
matching `$RABBITMQ_CONFIG_FILES`. It allows to split the configuration
into many files for easier management.
Here is the behavior in more details:
* If `$RABBITMQ_CONFIG_FILES` is a directory, all files directly inside
it are considered.
* If `$RABBITMQ_CONFIG_FILES` is a glob pattern, all files matching the
pattern are considered.
* In both cases, subdirectories (and whatever they contain) are ignored.
* `$RABBITMQ_CONFIG_FILES` is only relevant when the main configuration
is either missing (the file does not exist or is empty) or uses the
Cuttlefish format.
* Additional configuration files must use the Cuttlefish format.
The default value of `$RABBITMQ_CONFIG_FILES` is:
* `/etc/rabbitmq/conf.d/*.conf` on Unix
* `%APPDATA%\RabbitMQ\conf.d\*.conf` on Windows
Error messages related to Cuttlefish parsing were improved in the
process.
[#171491267]
|
| | |
| |
| |
| | |
We already try both formats when we parse the configuration.
|
| |/
|
|
| |
It was already loaded in `rabbit_prelaunch` (prelaunch phase 1).
|
| | |
|
| |\
| |
| | |
Optimise messages_ready function by keeping counts of prefix messages
|
| | |
| |
| |
| |
| | |
rather than taking length/1. There could be a lot of prefix messages
during during recovery which could make recovery unbearably slow.
|
| |\ \
| |/
|/| |
rabbit_prelaunch_sighandler: Comment out code which is unused
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
As it is ready to handle the stop of RabbitMQ and has been tested, we
can keep the code around just in case.
However, this causes a Dialyzer error which must be fixed, so let's
comment it out.
[#171234776]
|
| |\ \
| |/
|/| |
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]
|
| |\ \
| | |
| | | |
Fix QQ crash recovery bug
|
| | |/
| |
| |
| |
| |
| |
| |
| |
| | |
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]
|
| |\ \
| | |
| | | |
rabbit: Export product info in `status()`
|
| |/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Therefore, the underlying RabbitMQ version remains available through the
same key, `rabbitmq_version`.
The product information is available using two new keys:
* `product_name`
* `product_version`
While here, `base_product_name()` and `base_product_version()` functions
are exported to allow plugins to get the RabbitMQ default name &
version.
[#171467799]
|
| |\ \
| |/
|/| |
rabbitmq_prelaunch: Skip signal handler on Windows
|
| |/
|
|
|
|
|
| |
This is specific to Unix, and `os:set_signal()` reminded it to me with a
`badarg` exception.
[#171234776]
|
| |\
| |
| |
| |
| | |
rabbitmq/support-configurable-product-name-and-banner
Add ability to customize product name, version & banner
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To override the product name (defaulting to "RabbitMQ"):
* set the `$RABBITMQ_PRODUCT_NAME` environment variable, or
* set the `rabbit` application `product_name` variable.
To override the product version:
* set the `$RABBITMQ_PRODUCT_VERSION` environment variable, or
* set the `rabbit` application `product_version` variable.
To add content to the banner (both the copy logged and the one printed
to stdout), indicate the filename which contains it, à la `/etc/motd`
using:
* the `$RABBITMQ_MOTD_FILE` environment variable, or
* the `rabbit` application `motd_file` variable.
The default motd file is `/etc/rabbitmq/motd` on Unix and
`%APPDATA%\RabbitMQ\motd.txt` on Windows.
Here is an example of the printed banner with name, version & motd
configured:
## ## WeatherMQ 1.2.3
## ##
########## Copyright (c) 2007-2020 Pivotal Software, Inc.
###### ##
########## Licensed under the MPL 1.1. Website: https://rabbitmq.com
This is an example of a RabbitMQ message of the day.
The message is written in Paris, France. \ /
It is partly cloudy outside, with a _ /"".-.
temperature of 12°C. Wind is around \_( ).
30-40 km/h, from south-west. /(___(__)
Doc guides: https://rabbitmq.com/documentation.html
Support: https://rabbitmq.com/contact.html
Tutorials: https://rabbitmq.com/getstarted.html
Monitoring: https://rabbitmq.com/monitoring.html
Logs: /tmp/rabbitmq-test-instances/rabbit/log/rabbit@cassini.log
/tmp/rabbitmq-test-instances/rabbit/log/rabbit@cassini_upgrade.log
Config file(s): /tmp/rabbitmq-test-instances/test.config
Starting broker... completed with 0 plugins.
New APIS are available to query those product informations and use them
in e.g. plugins such as the management API/UI:
* rabbit:product_info/0
* rabbit:product_name/0
* rabbit:product_version/0
* rabbit:motd_file/0
* rabbit:motd/0
[#170054940]
|
| | |
|
| |\
| |
| | |
Only handle SIGHUP and SIGTSTP
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Here is a summary of RabbitMQ signal handling:
== SIGTERM ==
After #2180, `rabbit` is a regular Erlang application and
`application:stop(rabbit)` terminates RabbitMQ gracefully. This means
that `init:stop()` shuts the service down properly. Therefore, the
default handling of SIGTERM, which calls `init:stop()`, is correct.
rabbitmq-server(8) already relies on this mechanism.
This commit restores the default signal handler which already does the
right thing. No need to do it ourselves.
== SIGHUP and SIGTSTP ==
SIHGUP is usually used to reload the configuration without restarting
the service and/or reopen log files after log file rotation. SIGTSTP is
sent when a user types Ctrl+Z to pause a program and get back to the
shell. Both signals have common behavior we can't satisfy currently.
Note that we don't handle SIGCONT which is the one used to resume a
program after SIGTSTP. The system default behavior is already good (the
signal is discarded).
To be consistent with rabbitmq-server(8) signal handling, the signals
are ignored until we can do something about them.
== SIGQUIT ==
This signal is meant to terminate the process immediately and
create a core dump. If possible, temporary files should even be kept
around. The default behavior in Erlang is to call `erlang:halt()` which
is a sane default: we should not stop RabbitMQ gracefully.
This commit restores this behavior.
== SIGUSR1 and SIGUSR2 ==
Erlang uses SIGUSR1 to crash the VM and create an `erl_crash.dump`
file. We already used this in the past to debug RabbitMQ. Again, a sane
default.
This commit restores this behavior.
== Other signals ==
We keep the default behavior of all other signals. None of them are
meant to stop the program gracefully anyway. If a user wants to stop
RabbitMQ, he will already use the common accepted signal for this
purpose (i.e. SIGTERM).
Another change in this commit is the way we setup the signal handler:
* We don't replace the default Erlang signal handler, just add ours.
* We do it very early in rabbitmq_prelaunch. Like other things
configured by this application, we do not uninstall the handler when
the application is stopped.
This reverts:
* commit 6a4d2721d06b8c70a36e29e6c51bbef6608def55
* commit fa607e4a25d6142bb17a90b44ef757572a923c09
|
| |\ \
| |/
|/| |
Concurrent definition import
|
| | | |
|
| | | |
|