| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
Fixes #2394
|
| |
|
|
|
|
|
|
|
|
| |
If the environment variable RABBITMQ_HOME contained a path with either
'(' or ')' (for example, a path under C:\Program Files (x86)\), then
the script would unexpectedly exit with the error
'\some\path was unexpected at this time'. This was caused by the
parenthesis being interpreted as part of the batch 'if/else'.
Adding quotes around the arguments to the SET command fixes the problem.
|
| |
|
|
|
|
| |
Also ensure non-interactive behavior.
Fixes issue where my powershell profile tries to start up ssh-agent.exe
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
|
|
|
| |
On Amazon AWS EC2 Windows Server 2019 image, `where.exe` is unavailable.
Fortunately, we can achieve the same thing with a plain PowerShell
oneliner which should work everywhere.
PowerShell is provided with Windows since Windows 7 (2009) according to
Wikipedia.
|
| |
|
|
| |
rabbitmq-server.bat and rabbitmq-service.bat
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Otherwise, paths containing parenthesis such as `C:/Program Files
(x86)/...` get mis-interpreted and the function fails.
In my testing, the error was:
\Elixir\lib\elixir was unexpected
... based on the fact that Elixir is installed in
`C:\Program Files (x86)\Elixir`.
While here, explicitely calls `rabbitmqctl.bat`, not `rabbitmqctl`. The
latter might be available and picked in a Git clone.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fix missing quote in mkdir argument to handle directories with spaces properly on Windows
Ensure paths are double-quoted when necessary
Ensure all win32 paths have forward slashes. Use more typical escaping of double quotes
Do not convert to a binary as that has bad effects when the msg store dir base has extended ASCII characters, as when setting RABBITMQ_BASE to C:/ProgramData/Tést Directory (frazzle)/RabbitMQ
Add "t" modifier to format strings for values that may be unicode
Remove use of unquote as it only works when the second arg is not double-quoted when called, but that version fails on paths with spaces.
De-quote ALL THE THINGS
Update rabbitmq-components.mk
(cherry picked from commit a515903662566e0fc158918bc1c42fc1a0a8384a)
Log file management suite: adapt to Lager 3.8
I observed no functional changes around log rotation.
These assertions depend on internal file management
aspects of Lager, so let's update them and see.
References #2068, #2059.
(cherry picked from commit d6e7c3841c5f01933e9182da1701bd2ac74eb1ff)
(cherry picked from commit 6a9eb18ca1f1f3d5166e923f54f4ed349a1b95a2)
Replace dequote function with replace syntax, which works with unicode characters
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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]
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The variable was used in `rabbitmq-server.bat` & friends but not
defined, leading to a broken RabbitMQ on Windows.
Here is the crash logged early in RabbitMQ startup:
2018-10-31 10:34:23.672 [error] <0.42.0> application_controller: unterminated string starting with "\\=/RABBITMQ_SERV": "\\=/RABBITMQ_SERVER_START_ARGSRABBITMQ_DIST_ARGSTARVAR
2018-10-31 10:34:23.672 [error] <0.7.0>
Error description:
init:do_boot/3 line 819
init:start_em/1 line 1111
rabbit:start_it/1 line 460
rabbit:broker_start/0 line 336
rabbit:start_apps/2 line 518
app_utils:load_applications/1 line 41
app_utils:load_applications/2 line 110
throw:{error,{bad_environment_value,"\"\\\\=/RABBITMQ_SERVER_START_ARGSRABBITMQ_DIST_ARGSTARVAR"}}
|
| | |
|
| |
|
|
|
|
| |
SERVER_START_ARGS and SERVER_ADDITIONAL_ERL_ARGS from the rabbitmq-env-conf.bat file need to be honored here.
[159602360]
|
| | |
|
| |
|
|
| |
RABBITMQ_, adjust Unix and Windows files accordingly
|
| |
|
|
| |
reads from the env
|
| |
|
|
| |
Fixes #1508
|
| | |
|
| |
|
|
| |
(cherry picked from commit 0cd2fbdda7e9dea7cd651020478d5981e714ad44)
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| | |
The typo caused `-` configuration to be treated as
a file name, not tty logging, like it should be.
Fixes #1348
[#150808117]
|
| |\ \
| | |
| | | |
Set ERL_CRASH_DUMP location to rabbitmq log directory
|
| | | | |
|
| |/ /
| |
| |
| |
| | |
Upgrade sink is used for logging queue data upgrades.
It should be configured in the start arguments of rabbitmq server.
|
| |\ \
| |/ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
After 24 hours of testing we haven't observed any anomalities or
regressions. With this change multicast (mirroring) processes
should be suspended less frequently, resulting in less variable
throughput for mirroring (with link throughput of 1 GBit/s or greater).
Closes #1306.
[#149220393]
|
| | |
| |
| |
| |
| |
| | |
This reverts commit 836ae267e6a959a0243de38ce0ae4200f935b446.
This revert was only necessary in stable.
|
| |\ \
| |/ |
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
This reverts commit ce85ac7bb66203b19630317cc52fec81f3299cda.
This includes some master-specific bits.
|
| | |
| |
| |
| |
| | |
Conflicts:
scripts/rabbitmq-env.bat
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
Loading a native library (eg. a NIF) from an .ez archive in unsupported
by Erlang and the team decided to revert this change again.
This reverts commit 0151abf37710dfc421523f9235514a438270e032.
[#136622317]
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Support for reading static files from Erlang .ez archives was added to
Cowboy and various RabbitMQ plugins were updated to take advantage of
the new API.
So this commit restores the following commits:
7069f3b40daeb5095077bdac19f3837978bc2665
76a8c66c8092cc1c37bb4aa90a0a3d18b27f7d9d
2044cb1eed02e67c4ea749a807694c55ed574756
bc64ac16774aeb403cba87f7e48ad70329dd8b3b
d616cc922dbd73eca7700c50f09e33e6b578b0d9
They were reverted in 72f7c8e70028209ee1c58074c087b4d0cb901e6c because
Cowboy didn't have this support at the time.
Signed-off-by: Gerhard Lazu <gerhard@rabbitmq.com>
[#118562759, #136622317]
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This broke the management plugin: Cowboy assumes direct file access to
resources in the `priv` directory.
This reverts commits:
7069f3b40daeb5095077bdac19f3837978bc2665
76a8c66c8092cc1c37bb4aa90a0a3d18b27f7d9d
2044cb1eed02e67c4ea749a807694c55ed574756
bc64ac16774aeb403cba87f7e48ad70329dd8b3b
d616cc922dbd73eca7700c50f09e33e6b578b0d9
[#118562759]
|
| | |
| |
| |
| |
| |
| |
| |
| | |
The environment variable is now ignored.
Signed-off-by: Gerhard Lazu <gerhard@rabbitmq.com>
[#118562759]
|
| |\ \
| |/ |
|
| | |
| |
| |
| | |
Fixes #908.
|
| |\ \
| |/ |
|
| | |
| |
| |
| |
| |
| | |
See #895 for background and reasoning.
Fixes #895.
|
| |\ \
| |/ |
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
rename SCHEDULING to SCHEDULER in line with erlang documentation
|
| |\ \
| | |
| | | |
Handle paths with spaces on disk volumes with 8.3 name creation disabled
|
| | |/ |
|
| | | |
|