| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
|
| |
The latter is only ever called by the former, so there is no need to
split them.
|
| |\
| |
| | |
unit_log_config_SUITE: Adapt after fixes to rabbit_lager
|
| |/
|
|
|
|
| |
See:
* commit 169eeeb426b1c71e5b4e81f8fa813cab9570247a
* commit 15dfe7b1bf63c6f6b9940738b219f08bcc241cbd
|
| |\
| |
| |
| |
| | |
rabbitmq/fix-logging-after-issue2180-related-changes
Fix logging after #2180-related changes
|
| | |
| |
| |
| |
| |
| |
| |
| | |
After changing the module to take into account the log level set from
the `$RABBITMQ_LOG` environment variable, I broke the ability to set it
from the configuration file.
This should work again.
|
| |/
|
|
|
|
|
|
| |
For the other backends, go back to "\n" only.
This fixes an issue where the log file had a mix of "\n" and "\r\n" as
newlines characters. This was visible through "^M" characters at the end
of each line.
|
| |\
| |
| | |
Handle and raise protocol error for absent queues assumed to be alive
|
| |/ |
|
| | |
|
| | |
|
| |
|
|
|
| |
when working with definition import, replacement
or cleanup.
|
| |\
| |
| | |
Move all RabbitMQ-specific environment variables to `rabbit_env`
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
... instead of calling rabbit_nodes:name_type(). The latter now uses the
context to return the name type of the current node (instead of the
environment variable which may not be set). However, this function is
executed in the context of the CLI which does not start
rabbit_prelaunch. Therefore, there is no context to get the name type
from.
Anyway, the name type should be determined based on the node name we are
about to impersonate. So use the argument to deduce the name type.
|
| |/
|
|
|
|
|
|
|
|
| |
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]
|
| |
|
|
|
|
|
|
|
| |
* Only log the intent to import for categories that are not empty/missing
* Log how many entities will be imported
Current logging frequency is reasonable for occasional manual
or automated imports but with continuous automated imports
(say, a hot standby) it is too excessive.
|
| |
|
|
|
|
|
|
|
|
| |
rabbit_amqqueue:lookup/1 already supports lists of keys
but it makes less sense for rabbit_exchange:lookup/1.
This introduces a uniform API element that can be used to look up
N entities by key while preserving the historically accumulated
difference that stems from the common access patterns
for each entity type.
|
| |
|
|
| |
like rabbit_amqqueue does
|
| | |
|
| |
|
|
|
| |
As previous 3.7.x do not have the function the test relies on.
Note that the change is otherwise safe for them.
|
| |\
| |
| | |
Ignore SIGUSR2 signal as well
|
| |/
|
|
| |
Fixes #2222
|
| |\
| |
| | |
Override OTP handlers to gracefully shut down on SIGTERM, SIGQUIT
|
| | |
| |
| |
| |
| |
| |
| |
| | |
otherwise the default handler will terminate the runtime.
Closes #2222.
Pair: @vanlightly.
|
| |\ \
| |/
|/| |
Introduce a persistent internal cluster ID
|
| | |
| |
| |
| | |
Pair: @vanlightly
|
| |/
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| |\
| |
| | |
Fix bad type of result of ack function.
|
| | | |
|
| |/ |
|
| |\
| |
| | |
rabbit: Change start_apps/2 to call application:ensure_all_started/2
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
.. instead of reinventing about the same logic.
start_apps/2 is not called to start the `rabbit` application anymore (it
is started as a normal Erlang application now). It means it's only used
to start plugins which are also supposed to be regular Erlang
applications.
It runs boot steps unconditionally as well (because this function never
starts `rabbit).
One difference with the previous code is that the previous code started
all loaded applications. This seemed unnecessary and even caused issues
with testsuites where some applications were loaded like `rabbitmqctl`
but were not meant to be started.
Another difference is that before, all boot steps were executed at once,
then all plugins were started. Now, to improve consistency and make sure
that a dependency is fully ready before a plugin which depends on it
starts, for each application we execute the boot steps then start it,
before moving to the next.
[#170870798]
|
| |\
| |
| | |
rabbit: Fix plugins' run_boot_steps() vs. start order
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before `rabbit` startup code was rewritten as part of
rabbitmq/rabbitmq-server#2180 to make it closer to a regular Erlang
application, plugins' boot steps were executed before plugins were
started.
This commit restores this behavior. Indeed the initial patch inverted
them by starting the plugins first, then executed the boot steps.
It also brings another improvement in the process: a dependency has its
boot steps executed and is started before a plugin which depends on it
is considered. This should improve consistency.
Note that the `start_apps/2` function, which is run when a user enables
a plugin at runtime must be improved as well. There is a work in
progress in rabbitmq/rabbitmq-server#2219.
|
| |
|
|
|
| |
Those are all the testsuites which take more than 5 minutes in
Concourse.
|
| |\
| |
| | |
Handle timeout error on the rebalance function
|
| | |
| |
| |
| | |
Fixes: https://github.com/rabbitmq/rabbitmq-server/issues/2214
|
| |\ \
| |/
|/| |
Unsupported if_empty and if_unused flags for delete quorum queues
|
| | |
| |
| |
| | |
References #2211
|
| | |
| |
| |
| | |
[#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.
|
| |\ \
| |/
|/| |
rabbit_plugins: Filter non-plugins out
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the module discovers plugins in the plugins directories, it
considers all applications there. There are actual RabbitMQ plugins,
their dependencies, and possibly other applications which are neither
plugins nor dependencies.
So far, this was the case of `syslog` which could be used by Lager if
the user configures it. To make sure `rabbit_plugins` or
rabbitmq-plugins(8) didn't mess with `syslog`, there was a hard-coded
filtering function which excluded this specific application.
In RabbitMQ Enterprise Edition, we want to add another application
of this kind: `inet_tcp_compress_dist`. This application implements
an Erlang distribution protocol, so it is effectively unrelated to
RabbitMQ. However, to keep packaging simple, it is provided in the
plugins directory.
We could add it to the hard-coded filtering function, but instead this
function is replaced by the following logic to filter plugins:
* Applications which depend on `rabbit` are considered actual plugins.
* Plugins' dependencies, direct and indirect, are considered plugins
as well.
Therefore, `rabbit_plugins` will ignore:
* Applications which don't depend on `rabbit` and no plugins
depend on them (again, directly or indirectly)
* Applications which are part of Erlang/OTP.
This means the behavior slightly changes: a plugin which didn't declare
its dependency to `rabbit` will not be considered a plugin anymore. I
consider it is a bug in the plugin in the first place.
The code will log the following debug messages to list ignored
applications:
2020-01-14 13:18:41.468 [debug] <0.941.0> Plugins discovery: ignoring getopt, not a RabbitMQ plugin
2020-01-14 13:18:41.468 [debug] <0.941.0> Plugins discovery: ignoring inet_tcp_compress_dist, not a RabbitMQ plugin
2020-01-14 13:18:41.468 [debug] <0.941.0> Plugins discovery: ignoring lz4, not a RabbitMQ plugin
2020-01-14 13:18:41.468 [debug] <0.941.0> Plugins discovery: ignoring syslog, not a RabbitMQ plugin
2020-01-14 13:18:41.468 [debug] <0.941.0> Plugins discovery: ignoring zstd, not a RabbitMQ plugin
|
| |\
| |
| | |
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]
|
| | |
| |
| |
| |
| | |
This reduces the time it takes to generate the feature flags registry.
On my laptop, it goes from 830 ms to 235 ms.
|