| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |\
| |
| |
| |
| | |
Conflicts:
test/dynamic_ha_SUITE.erl
|
| | |\
| | |
| | | |
Check if vhost supervisor is running when starting mirrors
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When a vhost is deleted, both vhost_deleted and vhost_down will
be emitted, resulting in double deletion. rabbit_networking:close_connection/1
therefore can throw an exception about an unknown connection pid.
The handler needs to account for that.
While at it, change log messages to be less alarming and simply
mention vhost shutdown as opposed to "a database failure".
References 7a82b43bf12b737250957081d0b0d84b21b3bf72.
Signed-off-by: Luke Bakken <lbakken@pivotal.io>
|
| | | |\
| | |/
| |/|
| | |
| | | |
Conflicts:
test/vhost_SUITE.erl
|
| | |\ \
| | | |
| | | | |
Set queue state to 'stopped' when terminating.
|
| | | |\ \ |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
queue is stopped.
The only operation in `with` which can be performed on a stopped queue
is `delete`. It will call `delete_crashed` based on the `{absent, Q, stopped}`
result from `with`.
|
| | | |\ \ \ |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | | |
supervisors
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
If a queue process is stopped by a vhsot supervision tree, it should
be visible in the management UI and the `list_queues` command output.
Setting the queue state to `stopped` is easier to reason about than
checking the vhost aliveness status on a remote node.
If queue will be restarted or migrated to a different node, the status
will be set to `live`.
If a node was not stopped normally the queues will have `live`
state. If we cannot recover the queues thay should be marked
`stopped` to be reported to rabbitmqctl and management UI
Fixes #1303
[#148409695]
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
During the vhost delete operation runtime parameters cleanup
happens after vhost is deleted, so `notify_clear` should not
fail if vhost does not exist anymore.
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Of a vhost supervisor is down it can still be deleted and with
all the data. This is useful if an operator wants to delete a
bad vhost.
|
| | | | | | | |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
We should not fail a node boot process if cannot create slaves on
down vhosts.
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Do not start a vhost supervisor when accessing it.
Rename functions to be more descriptive.
|
| | | | | | | |
|
| |/ / / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Vhost supervisors can crash and restart without crashing the
node, so the slave queues on this vhosts should be started
after the vhsot recovery instead of node boot process.
Fixes #1314
[#149484151]
|
| |\ \ \ \ \
| |_|_|_|/
|/| | | | |
Travis CI build
|
| | | | | | |
|
| | |\ \ \ \
| |/ / / /
|/| | | | |
|
| |\ \ \ \ \ |
|
| | |\ \ \ \ \
| | | | | | |
| | | | | | | |
Bump DEFAULT_DISTRIBUTION_BUFFER_SIZE to 128 MB
|
| | |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
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]
|
| |\ \ \ \ \ \
| |_|_|_|_|/
|/| | | | | |
Log a more sensible error message when running on an outdated Erlang version
|
| | | | | | | |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Per suggestion from @lukebakken.
References #1307.
[Finishes #149635897]
|
| |/ / / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
too old
Closes #1307.
[#149635897#]
|
| | | | | |
| | | | |
| | | | |
| | | | | |
rabbit_types:connection_name() is used elsewhere but was not exported.
|
| |\ \ \ \ \
| |_|_|_|/
|/| | | | |
Bump Erlang versions in .travis.yml
|
| | | |_|/
| |/| |
| | | |
| | | |
| | | | |
Part of #1305.
[#149563549]
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The file included all variable queue code, which was changed
several times. It doesn't make sense to maintain two identical
files, so now all the callbacks are called from rabbit_variable_queue.
|
| | | | | |
|
| |\ \ \ \
| |/ / /
|/| / /
| |/ / |
|
| | | | |
|
| | | | |
|
| |\ \ \
| |/ /
| | |
| | |
| | | |
Conflicts:
rabbitmq-components.mk
|
| | | | |
|
| |\ \ \
| | | |
| | | | |
Report vhost status on vhost info
|
| | |\ \ \
| |/ / /
|/| | | |
|
| |\ \ \ \
| | |/ /
| |/| | |
|
| | |\ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
rabbitmq/stable-gm-mem-usage-during-constant-redelivery
Stable GM memory usage during constant redelivery
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
In high throughput scenarios, e.g. `basic.reject` or `basic.nack`,
messages which belong to a mirrored queue and are replicated within a GM
group, are quickly promoted to the old heap. This means that garbage
collection happens only when the Erlang VM is under memory pressure,
which might be too late. When a process is under pressure, garbage
collection slows it down even further, to the point of RabbitMQ nodes
running out of memory and crashing. To avoid this scenario, We want the
GM process to garbage collect binaries regularly, i.e. every 250ms. The
variable queue does the same for a similar reason:
rabbitmq/rabbitmq-server#289
Initially, we wanted to use the number of messages as the trigger for
garbage collection, but we soon discovered that different workloads
(e.g. small vs large messages) would result in unpredictable and
sub-optimal GC schedules.
Before setting `fullsweep_after` to 0, memory usage was 2x higher (400MB
vs 200MB) and throughput was 0.1x lower (18k vs 20k). With this
`spawn_opt` setting, the general collection algorithm is disabled,
meaning that all live data is copied at every garbage collection:
http://erlang.org/doc/man/erlang.html#spawn_opt-3
The RabbitMQ deployment used for testing this change:
* AWS, c4.2xlarge, bosh-aws-xen-hvm-ubuntu-trusty-go_agent 3421.11
* 3 RabbitMQ nodes running OTP 20.0.1
* 3 durable & auto-delete queues with 3 replicas each
* each queue master was defined on a different RabbitMQ node
* every RabbitMQ node was running 1 queue master & 2 queue slaves
* 1 consumer per queue with QOS 100
* 100 durable messages @ 1KiB each
* `basic.reject` operations
```
| Node | Message throughput | Memory usage |
| ------ | -------------------- | -------------- |
| rmq0 | 12K - 20K msg/s | 400 - 900 MB |
| rmq1 | 12K - 20K msg/s | 500 - 1000 MB |
| rmq2 | 12K - 20K msg/s | 500 - 800 MB |
```
[#148892851]
Signed-off-by: Gerhard Lazu <gerhard@rabbitmq.com>
|
| | |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We don't want to use the backoff/hibernate feature because we have
observed that the GM process is suspended half of the time.
We really wanted to replace gen_server2 with gen_server, but it was more
important to keep changes in 3.6 to a minimum. GM will eventually be
replaced, so switching it from gen_server2 to gen_server will be soon
redundant. We simply do not understand some of the gen_server2
trade-offs well enough to feel strongly about this change.
[#148892851]
Signed-off-by: Gerhard Lazu <gerhard@rabbitmq.com>
|
| | | | | |
|
| | | | | |
|