summaryrefslogtreecommitdiff
path: root/src/rabbit.erl
Commit message (Collapse)AuthorAgeFilesLines
* Stream Queuekjnilsson2020-09-301-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is an aggregated commit of all changes related to the initial implementation of queue types and on top of that the stream queue type. The varios commit messages have simply been included mostly un-edited below. Make rabbit_amqqueue:not_found_or_absent_dirty/1 visible For use in the stream plugin. Use bigger retention policy on max-age test Set coordinator timeout to 30s Handle coordinator unavailable error Handle operator policies as maps when checking if is applicable Add is_policy_applicable/2 to classic queues Ignore restart commands if the stream has been deleted It could happen that after termination some of the monitors are still up and trigger writer/replica restarts Policy support on stream queues Remove subscription events on stream coordinator Ensure old leaders are removed from monitors Introduce delay when retrying a failed phase Note that this ensures monitor is setup, there was a bug where no monitor was really started when re-trying the same phase Restart replicas after leader election instead of relying on old monitors Use timer for stream coordinator retries Fix stream stats for members/online Multiple fixes for replica monitoring and restart Ensure pending commands are appended at the end and re-run Ensure phase is reset with the state Remove duplicates from replica list Restart current phase on state_enter Remove unused import Ensure rabbit is running when checking for stream quorum Restart replicas Add a close/1 function to queue types So that we can get a chance of cleaning up resources if needed. Stream queues close their osiris logs at this point. fix compiler errors stream-queue: take retention into account When calculating ready messages metrics. Add osiris to the list of rabbit deps Retry restart of replicas Do not restart replicas or leaders after receiving a delete cluster command Add more logging to the stream coordinator Monitor subscribed processes on the stream coordinator Memory breakdown for stream queues Update quorum queue event formatter rabbit_msg_record fixes Refactor channel confirms Remove old unconfirmed_messages module that was designed to handle multiple queue fan in logic including all ha mirrors etc. Replaced with simpler rabbit_confirms module that handles the fan out and leaves any queue specific logic (such as confirms from mirrors) to the queue type implemention. Also this module has a dedicated test module. Which is nice. Backward compatibility with 3.8.x events Supports mixed version cluster upgrades Match specification when stream queue already exists Max age retention for stream queues Stop all replicas before starting leader election stream: disallow global qos remove IS_CLASSIC|QUORUM macros Ensure only classic queues are notified on channel down This also removes the delivering_queues map in the channel state as it should not be needed for this and just cause additional unecessary accounting. Polish AMQP 1.0/0.9.1 properties conversion Support byte in application properties, handle 1-bit representation for booleans. Use binary in header for long AMQP 1.0 ID Fix AMQP 1.0 to 0.9.1 conversion Fix test due to incorrect type Convert timestamp application properties to/from seconds AMQP 1.0 uses milliseconds for timestamp and AMQP 0.9.1 uses seconds, so conversion needed. Dialyzer fixes Handle all message-id types AMQP 1.0 is more liberal in it's allowed types of message-id and correlation-id - this adds headers to describe the type of the data in the message_id / correlation_id properties and also handles the case where the data cannot fit by again using headers. Resize stream coordinator cluster when broker configuration changes convert timestamp to and fro seconds user_id should be a binary message annotations keys need to be symbols stream-queue: default exchange and routing key As these won't be present for data written using the rabbitmq-stream plugin. Add exchange, routing key as message annotations To the AMQP 1.0 formatted data to enable roundtrip. Add osiris logging module config And update logging config test suite. Restart election when start of new leader fails The node might have just gone down so we need to try another one Only aux keeps track of phase now, as it might change if the leader election fails Stream coordinator refactor - all state is kept on the ra machine Ensure any ra cluster not a qq is not cleaned up Fixes to recovery and monitoring Add AMQP 1.0 common to dependencies Add rabbit_msg_record module To handle conversions into internal stream storage format. Use rabbitmq-common stream-queue branch Use SSH for osiris dependency Stream coordinator: delete replica Stream coordinator: add replica Stream coordinator: leader failover Stream coordinator: declare and delete Test consuming from a random offset Previous offsets should not be delivered to consumers Consume from stream replicas and multiple test fixes Use max-length-bytes and add new max-segment-size Use SSH for osiris dependency Basic cancel for stream queues Publish stream queues and settle/reject/requeue refactor Consume from stream queues Fix recovery Publish stream messages Add/delete stream replicas Use safe queue names Set retention policy for stream queues Required by the ctl command [#171207092] Stream queue delete queue fix missing callback impl Stream queue declare Queue type abstraction And use the implementing module as the value of the amqqueue record `type` field. This will allow for easy dispatch to the queue type implementation. Queue type abstraction Move queue declare into rabbit_queue_type Move queue delete into queue type implementation Queue type: dequeue/basic_get Move info inside queue type abstraction Move policy change into queue type interface Add purge to queue type Add recovery to the queue type interface Rename amqqueue quorum_nodes field To a more generic an extensible opaque queue type specific map. Fix tests and handle classic API response Fix HA queue confirm bug All mirrors need to be present as queue names. This introduces context linking allowing additional queue refs to be linked to a single "master" queue ref contining the actual queue context. Fix issue with events of deleted queues Also update queue type smoke test to use a cluster by default. correct default value of amqqueue getter Move classic queues further inside queue type interface why [TrackerId] Dialyzer fixes
* Introduce per-user channel trackingAyanda-D2020-08-241-0/+5
| | | | | | Make 'tracking_execution_timeout' configurable Add per_user_connection_channel_tracking_SUITE
* rabbit: Move critical code back to before we mark the node as readyJean-Sébastien Pédron2020-07-241-14/+19
| | | | | | | | `rabbit_networking:boot()` and the maintenance mode preparation was moved or added after we marked the node as ready. Therefore, functions such as `rabbit:is_running()` were lying. This led to bugs such as "rabbitmqctl wait" tu return too early, or testcases starting to run before the node was started and thus failing.
* Report node maintenance status in 'rabbitmq-diagnostics status'Michael Klishin2020-07-141-0/+1
| | | | Part of rabbitmq/rabbitmq-server#2321
* DittoMichael Klishin2020-07-141-1/+1
|
* Strip some trailing whitespaceMichael Klishin2020-07-141-1/+1
|
* Node entering maintenance will shut down its local quorum queue replicasMichael Klishin2020-07-141-2/+5
| | | | | | and restart them upon revival. Part of rabbitmq/rabbitmq-server#2321
* Merge pull request #2406 from rabbitmq/rabbitmq-server-2405Michael Klishin2020-07-121-3/+11
|\ | | | | Move networking boot step to end of startup
| * Log a message when listeners are about to be startedMichael Klishin2020-07-121-0/+1
| |
| * Move networking boot step to end of startupLuke Bakken2020-07-091-3/+10
| | | | | | | | | | | | | | This allows plugins to configure network listener settings and have those settings apply to all listeners when started. Fixes #2405
* | Switch to Mozilla Public License 2.0 (MPL 2.0)dcorbacho2020-07-101-12/+3
|/
* Avoid seeding default data if there are configured definitions to load on bootMichael Klishin2020-06-261-3/+8
| | | | | | | | | This is a behavior we use to provide because definitions were imported before the empty DB boot step. Now when the definitions are imported in the post-launch phase, we'd always end up with default data seeded in addition to definitions being imported. References #2384
* Export definitions on boot after all plugins have been enabledMichael Klishin2020-06-261-12/+5
| | | | | | | This way definitions that depend on a plugin, such as federation upstreams or exchanges of custom types, can be imported successfully. Closes #2384
* drop deprecated HiPE compilationPierre Fenoll2020-06-241-9/+1
| | | | Signed-off-by: Pierre Fenoll <pierrefenoll@gmail.com>
* rabbit: Use `rabbit_prelaunch` to get contextJean-Sébastien Pédron2020-06-041-2/+2
| | | | | | Before this patch, we were using `rabbit_env` directly which computed the environment again. In the end, we would compute the environment four times instead of just once.
* Expose Ra data directory in rabbit:status/0Michael Klishin2020-05-301-1/+2
|
* rabbit: Include base product name & version in "Starting" logged messageJean-Sébastien Pédron2020-04-301-3/+14
| | | | | | | | | | | | | | | | | | | | When the product name & version are not overridden, the common logged message is the following one: 2020-04-24 15:08:51.754 [info] <0.263.0> Starting RabbitMQ 3.8.0+rc.1.278.g5cdf562.dirty on Erlang 21.3.8.13 Copyright (c) 2007-2020 VMware, Inc. or its affiliates. Licensed under the MPL 1.1. Website: https://rabbitmq.com Now, when the product name or version are overridden, the "Starting" line mentions them. There is a second line added with the base product name & version: 2020-04-24 15:08:51.754 [info] <0.263.0> Starting RabbitMQ Enterprise Edition 2020.04 on Erlang 21.3.8.13 Based on RabbitMQ 3.8.0+rc.1.278.g5cdf562.dirty Copyright (c) 2007-2020 VMware, Inc. or its affiliates. Licensed under the MPL 1.1. Website: https://rabbitmq.com
* rabbit: Report base and overridden product info separatelyJean-Sébastien Pédron2020-04-301-39/+65
| | | | | | | | | | | | | | | | | | | | | | | | | Now, `rabbit:product_info/0` will report the base name & version ("RabbitMQ" and its actual version) separately from the final product name & version (if any). If the product name & version were not overridden in the configuration or the environment, they will be missing from the product info return value. It allows caller to distinguish situations where the product name & version were set or not. An example use case is `rabbitmqctl status`: we want to report the product name & version only if they were overridden. If they were not, the "Product name" and "Product version" won't be added to the output. Only "RabbitMQ version" will be displayed. To help with the above, the map returned by `rabbit:product_info/0` also contains a flag, `product_overridden`, set to true if they were. Finally, the RabbitMQ version is often associated with the Erlang/OTP release. So include this into the returned map. This will save an additional RPC call if the remote caller is interested in both.
* Attempt to make unit_log_managment_SUITE less flakyPhilip Kuryloski2020-04-211-4/+7
| | | | | | | | | | Rather than wait a fixed 2000ms, poll the test condition for up to 5000ms. Also switch from a raw message send in rabbit.erl to a gen_event:call/4 to the lager backend. I had hoped this would behave synchronously, which it does not appear to, but at least we now get a value back from the call.
* Make sure definition import work pool is started before actual import boot stepMichael Klishin2020-03-121-14/+15
|
* Update copyright (year 2020)Jean-Sébastien Pédron2020-03-101-1/+1
|
* rabbit: Do not load configuration twiceJean-Sébastien Pédron2020-02-281-6/+3
| | | | It was already loaded in `rabbit_prelaunch` (prelaunch phase 1).
* rabbit: Export product info in `status()`Jean-Sébastien Pédron2020-02-251-1/+7
| | | | | | | | | | | | | | | 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]
* Add ability to customize product name, version & bannerJean-Sébastien Pédron2020-02-201-12/+167
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]
* Merge pull request #2244 from rabbitmq/only-handle-SIGHUP-and-SIGTSTPGerhard Lazu2020-02-201-6/+0
|\ | | | | Only handle SIGHUP and SIGTSTP
| * Only handle SIGHUP and SIGTSTPJean-Sébastien Pédron2020-02-201-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Import definitions concurrentlyMichael Klishin2020-02-181-1/+6
|/ | | | | | | | | | | | | | | | | | …or rather, import some definition categories concurrently, namely users, virtual hosts, queues, exchanges and bindings. For some workloads this leads to a 20% to 70% reduction in definition import time. Note that for virtual hosts, most of the creation process steps cannot be made concurrent or significantly optimised without compromising the observed atomicity of HTTP API and CLI operations, so concurrent import both makes less of a difference and is the only realistic way of speeding up the process for virtual hosts. This introduces a dedicated work pool for import operations to avoid overloading the default pool, in particular on node boot when definitions can be imported concurrently with on disk data recovery steps which use the default pool heavily.
* Convert systemd notification to prelaunch stepsPhilip Kuryloski2020-02-101-127/+12
| | | | | | | | | | | | | | | | | | Introduce the rabbit_boot_state module, which extracts boot state management out of rabbit_prelaunch. External boot state listeners, such as systemd, now live under the rabbit_boot_state_sup supervisor, which dispatches boot state updates to all of its children as a gen_server cast. Additionally: - the systemd listener now reads the NOTIFY_SOCKET env var directly, rather than through rabbit_env, to avoid the need to wait for the rabbit_env context to initialize - the sytemd listener now only checks for the sd_notify module and NOTIFY_SOCKET env var once upon startup, exiting gracefully when not needed - systemd related log messages are now routed through lager
* rabbit: Change boot state to `stopping` in prep_stop/1Jean-Sébastien Pédron2020-02-101-3/+3
|
* rabbit: Merge start_apps/2 and start_loaded_apps/2Jean-Sébastien Pédron2020-02-101-7/+6
| | | | | The latter is only ever called by the former, so there is no need to split them.
* Move all RabbitMQ-specific environment variables to `rabbit_env`Jean-Sébastien Pédron2020-02-031-5/+6
| | | | | | | | | | 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]
* Override OTP handlers to gracefully shut down on SIGTERM, SIGQUITMichael Klishin2020-01-301-0/+6
| | | | | | | | otherwise the default handler will terminate the runtime. Closes #2222. Pair: @vanlightly.
* rabbit: Change start_apps/2 to call application:ensure_all_started/2Jean-Sébastien Pédron2020-01-241-8/+14
| | | | | | | | | | | | | | | | | | | | | | | | | .. 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 orderJean-Sébastien Pédron2020-01-241-4/+14
| | | | | | | | | | | | | | | | | | 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.
* (c) bumpMichael Klishin2019-12-291-1/+1
|
* rabbitmq_prelaunch: Run rabbit_prelaunch_conf:setup/1 earlierLuke Bakken2019-12-191-5/+8
| | | | | | | | | | | | | | | | | This fixes the issue where applications' configuration is applied after they are started (and they do not read their environment again after startup). This is the case of applications such as `ra` or `sysmon_handler`: they are dependencies of `rabbit` and the Erlang application controller will start them before. Now, the configuration is loaded during the first prelaunch phase by rabbitmq_prelaunch, hopefully before those applications are started. To permit this change, the code updating the `enabled_plugins_file` was moved to its own module. This one can't be moved to the rabbitmq_prelaunch application because it depends on `rabbit_plugins`. While here, add a couple assertions by checking return values.
* rabbit: Notify systemd after marking RabbitMQ as readyJean-Sébastien Pédron2019-12-161-2/+2
| | | | | | | | | Otherwise, there is a small time window where systemd considers the service as running, but `rabbit:is_running()` would return false. For instance, if "rabbitmqctl status" is called during that window, it would return an error saying that RabbitMQ must be started on the node. This must be the situation hit during package testing in CI.
* Move most of shell scripts to Erlang codeJean-Sébastien Pédron2019-12-111-361/+322
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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).
* Extract rabbit_definitions from rabbitmq-managementMichael Klishin2019-11-121-0/+9
| | | | Part of rabbitmq/rabbitmq-management#749.
* Take infinity timeout into accountLuke Bakken2019-11-061-0/+4
| | | | | | Fixes #2158 Related to #2144
* Make a bunch of Ra settings configurable rabbitmq.confMichael Klishin2019-10-271-1/+6
| | | | | | | | | raft.segment_max_entries = 65535 raft.wal_max_size_bytes = 1048576 raft.wal_max_batch_size = 32768 raft.snapshot_chunk_size = 1000000 Closes #2140.
* Handle infinity timeout when awaiting boot finishMichael Klishin2019-10-181-0/+4
| | | | Spotted by @lukebakken.
* More startup banner tweaks suggested by @gerhardMichael Klishin2019-09-251-7/+10
|
* Rearrange startup banner itemsMichael Klishin2019-09-251-12/+11
|
* Startup banner improvementsMichael Klishin2019-09-251-14/+22
| | | | Include config file paths and doco links.
* WordingMichael Klishin2019-09-181-1/+2
|
* Added more helpful message in case the config file failed to generatevanseverk2019-09-181-2/+3
|
* Make virtual host record versionedDiana Corbacho2019-08-301-2/+2
| | | | | | | | | | | | | | | | | Add metadata fields to virtual host Address feedback in #2080 * Switch to functions for vhost record accessors * Restore rabbit_vhost:list/0 behavior, introduce rabbit_vhost:all/0 to compensate * Store tags as an array of atoms, the same way we do for user tags * Type spec fixes * Other minor interface improvements suggested by @dumbbell Co-Authored-By: Michael Klishin <mklishin@pivotal.io> [#166298298]
* Remove short name formattingLuke Bakken2019-08-131-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Make it possible to pre-configure cluster name via configMichael Klishin2019-08-121-0/+6
| | | | Per discussion with @gerhard.