| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
All binding operations aquire special locks for destination and source.
This is done to make sure bindings cannot be added or removed while
being cleaned up.
This means that adding and removing bindings for the same records may
conflict.
To avoid conflict the locks aquired during add/remove are now read locks.
This should improve performance in case of concurrent bindings creation
for the same resource.
|
| |\
| |
| | |
Poison handling in quorum queues
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
Called `delivery_limit`
[#163513253]
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| | |
To keep all static and rarely changed data in a nested sub-structure.
This will reduce gc pressure somewhat.
[#163513253]
|
| | | |
|
| | |
| |
| |
| | |
So that nodeups also can stand a chance to be tested
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
By ensuring the delivery count is retained when "dehydrating" the state
in preparation for snapshotting. Now the entire message header map is
stored which will take additional space w.r.t to keynamne duplication
although this can be optimised.
Also updated the property test to generate fake pids for multiple nodes
so that multi node scenarios are better covered.
[#163513253]
|
| | |
| |
| |
| | |
[#163513253]
|
| | |
| |
| |
| | |
[#163513253]
|
| | |
| |
| |
| |
| |
| |
| | |
Drop messages that exceed the configured number of delivery attemps.
If a DLX is configured, dead letter them.
[#163513253]
|
| | | |
|
| |\ \
| |/
|/| |
Handle premature connection termination in connection tracking handler
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a connection disappears before the handler can get the relevant info
from a connection_created event, the handler crashes:
2019-02-21 16:47:03.086 [info] <0.1283.0> accepting AMQP connection <0.1283.0> (10.44.1.56:34784 -> 10.44.0.54:5672)
2019-02-21 16:47:03.239 [info] <0.1283.0> Connection <0.1283.0> (10.44.1.56:34784 -> 10.44.0.54:5672) has a client-provided name: perf-test-configuration
2019-02-21 16:47:03.254 [info] <0.1283.0> connection <0.1283.0> (10.44.1.56:34784 -> 10.44.0.54:5672 - perf-test-configuration): user 'test' authenticated and granted access to vhost '/'
2019-02-21 16:47:03.256 [error] <0.392.0> ** gen_event handler rabbit_connection_tracking_handler crashed.
** Was installed in rabbit_event
** Last event was: {event,connection_created,[{user_provided_name,<<"perf-test-configuration">>},{type,network},{pid,<0.1283.0>},{name,<<"10.44.1.56:34784 -> 10.44.0.54:5672">>},{port,5672},{peer_port,34784},{host,{0,0,0,0,0,65535,2604,54}},{peer_host,{0,0,0,0,0,65535,2604,312}},{ssl,false},{peer_cert_subject,''},{peer_cert_issuer,''},{peer_cert_validity,''},{auth_mechanism,<<"PLAIN">>},{ssl_protocol,''},{ssl_key_exchange,''},{ssl_cipher,''},{ssl_hash,''},{protocol,{0,9,1}},{user,<<"test">>},{vhost,<<"/">>},{timeout,60},{frame_max,131072},{channel_max,2047},{client_properties,[{<<"connection_name">>,longstr,<<"perf-test-configuration">>},{<<"product">>,longstr,<<"RabbitMQ">>},{<<"copyright">>,longstr,<<"Copyright (c) 2007-2019 Pivotal Software, Inc.">>},{<<"capabilities">>,table,[{<<"exchange_exchange_bindings">>,bool,true},{<<"connection.blocked">>,bool,true},{<<"authentication_failure_close">>,bool,true},{<<"basic.nack">>,bool,true},{<<"publisher_confirms">>,bool,true},{<<"consumer_cancel_notify">>,bool,true}]},{<<"information">>,longstr,<<"Licensed under the MPL. See http://www.rabbitmq.com/">>},{<<"version">>,longstr,<<"5.6.0">>},{<<"platform">>,longstr,<<"Java">>}]},{connected_at,1550767623053},{node,'rabbit@rabbitmq-2.rabbitmq-headless.rabbitmq.svc.cluster.local'},...],...}
** When handler state == []
** Reason == {error,{no_exists,['tracked_connection_on_node_rabbit@rabbitmq-2.rabbitmq-headless.rabbitmq.svc.cluster.local',{'rabbit@rabbitmq-2.rabbitmq-headless.rabbitmq.svc.cluster.local',<<"10.44.1.56:34784 -> 10.44.0.54:5672">>}]}}
2019-02-21 16:47:03.302 [info] <0.1292.0> accepting AMQP connection <0.1292.0> (10.44.1.56:34788 -> 10.44.0.54:5672)
2019-02-21 16:47:03.333 [info] <0.1292.0> Connection <0.1292.0> (10.44.1.56:34788 -> 10.44.0.54:5672) has a client-provided name: perf-test-consumer-0
2019-02-21 16:47:03.336 [info] <0.1292.0> connection <0.1292.0> (10.44.1.56:34788 -> 10.44.0.54:5672 - perf-test-consumer-0): user 'test' authenticated and granted access to vhost '/'
2019-02-21 16:47:03.942 [info] <0.1315.0> accepting AMQP connection <0.1315.0> (10.44.0.56:49878 -> 10.44.0.54:5672)
2019-02-21 16:47:03.963 [info] <0.1315.0> Connection <0.1315.0> (10.44.0.56:49878 -> 10.44.0.54:5672) has a client-provided name: perf-test-consumer-0
2019-02-21 16:47:03.972 [info] <0.1315.0> connection <0.1315.0> (10.44.0.56:49878 -> 10.44.0.54:5672 - perf-test-consumer-0): user 'test' authenticated and granted access to vhost '/'
2019-02-21 16:47:04.038 [info] <0.1337.0> accepting AMQP connection <0.1337.0> (10.44.0.56:49880 -> 10.44.0.54:5672)
2019-02-21 16:47:04.044 [info] <0.1337.0> Connection <0.1337.0> (10.44.0.56:49880 -> 10.44.0.54:5672) has a client-provided name: perf-test-producer-0
2019-02-21 16:47:04.048 [info] <0.1337.0> connection <0.1337.0> (10.44.0.56:49880 -> 10.44.0.54:5672 - perf-test-producer-0): user 'test' authenticated and granted access to vhost '/'
cc @mkuratczyk
rabbit_connection_tracking_handler: handle more errors when registering a connection
Due to #1869, a connection can be accepted before connection tracking
tables were initialized/synced from a peer. The handler should log
a warning and not terminate, even if it would be restarted, to reduce
log noise and scare fewer operators for no real reason:
the condition is transient and should not normally last for more than
a few tenths of a second.
Use tracked connection ID in error message
|
| | |
|
| |
|
|
| |
Make it more readable for people that use split buffers.
|
| |\
| |
| | |
Fix channel liveness issue when publishing to an unavailable quorum queue
|
| | |\
| |/
|/| |
|
| |\ \
| | |
| | | |
Quorum queue grow and shrink commands
|
| | | | |
|
| | |\ \ |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
To filter non-running nodes instead of by connection as it should
not be possible to add a quorum
queue server running on an erlang node without RabbitMQ.
[#162782801]
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
To allow operators to grow quorum queue clusters with some degree of
selection.
[#162782801]
|
| | | | | |
|
| | | | | |
|
| | |\ \ \ |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Also add rabbitmq-queue integration test for shrink command.
[#162782789]
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Also change formatting.
[#162782789]
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
That takes a node and removes all quorum queue members for this node and
returns an list of results for each queue.
[#162782789]
|
| | |_|/ /
|/| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We use rabbitmqctl(8) inside `rabbitmq-env` to query the settings of the
remote nodes (path to plugins, feature flags file, the database, etc).
However, before this patch, we didn't pass the name of the remote node
as specified by the user with `-n`. Therefore, the default node name was
used (`rabbit@$hostname`) and that node may not exist at all.
This caused the executed script to run with possibly incorrect settings.
In particular, this prevented rabbitmq-plugins(8) from working properly
on a node started with `gmake run-broker`.
This should now be fixed because we extract the remote node name from
the command line arguments and pass it to the child rabbitmqctl(8).
|
| | |/ /
|/| |
| | |
| | |
| | |
| | |
| | |
| | | |
A failure to locate source directory should be logged as an error
into both upgrade and regular log for extra visibility.
See https://groups.google.com/forum/#!topic/rabbitmq-users/toq2dpocm0k
for background.
|
| |\ \ \
| | | |
| | | | |
Avoid synchronous channel request to connection process
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | | |
synchronous channel requests back to the connection process
|
| |\ \ \ \
| |/ / /
|/| | | |
Check exclusive owner before durable argument
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
See #1887 for context. When an exclusive queue is redeclared with
the exclusive property set to `false`, the code considers it to be
an ownership check. This is a leaked implementation detail that's
been around for years, so changing it might do more harm than good.
What we can do is provide a bit more information about when the
check might fail in the message.
|
| |/ / /
| | |
| | |
| | | |
Fixes #1887
|
| |\ \ \
| | | |
| | | | |
Recover bindings for all durable queues including failed to recover.
|
| | |\ \ \
| |/ / /
|/| | | |
|
| |\ \ \ \
| | | | |
| | | | | |
Do not fail on bind/unbind operations if the binding records are inconsistent.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
Older versions still can return binding_not_found error.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
If there is a record for the rabbit_durable_route table but no record
for rabbit_route table, the binding operations should still proceed to
create/remove bindings. This will allow the clients to fix data inconsistency
that server did not fix during recovery.
[#163952284]
|
| |/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
`rabbit_binding:list_for_destination/1`
Follow-up to #1721.
Even though the default exchange bindings are deleted at schema
migration time, this filtering improves backwards compatibility
for mixed version clusters.
|
| |\ \ \ \
| | | | |
| | | | | |
Remove inet_dist_listen_* configuration
|