summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Less aggressive locking for bindings add/reomve.Daniil Fedotov2019-02-261-10/+8
| | | | | | | | | | | | | | 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.
* Merge pull request #1889 from rabbitmq/poison-handling-qqMichael Klishin2019-02-269-2213/+2383
|\ | | | | Poison handling in quorum queues
| * These tests use CT nowMichael Klishin2019-02-261-2/+0
| |
| * NamingMichael Klishin2019-02-261-17/+17
| |
| * Introduce new dlx reason for delivery limitkjnilsson2019-02-252-3/+4
| | | | | | | | | | | | Called `delivery_limit` [#163513253]
| * Formattingkjnilsson2019-02-252-104/+104
| |
| * Move rabbit_fifo unit tests into own SUITEkjnilsson2019-02-254-2065/+1952
| |
| * Restructure rabbit_fifo statekjnilsson2019-02-251-57/+68
| | | | | | | | | | | | | | To keep all static and rarely changed data in a nested sub-structure. This will reduce gc pressure somewhat. [#163513253]
| * fix dialyzer issueskjnilsson2019-02-221-3/+1
| |
| * Add nodeup commands to rabbit_fifo_propkjnilsson2019-02-221-7/+15
| | | | | | | | So that nodeups also can stand a chance to be tested
| * Fix rabbit_fifo poison handlingkjnilsson2019-02-222-54/+123
| | | | | | | | | | | | | | | | | | | | | | | | 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]
| * Remove poison message from indexesDiana Corbacho2019-02-222-38/+45
| | | | | | | | [#163513253]
| * Include poison message handling in snapshot testingDiana Corbacho2019-02-221-7/+23
| | | | | | | | [#163513253]
| * Poison handling in quorum queuesDiana Corbacho2019-02-224-33/+208
| | | | | | | | | | | | | | Drop messages that exceed the configured number of delivery attemps. If a DLX is configured, dead letter them. [#163513253]
* | Remove file added by mistakeLuke Bakken2019-02-251-11/+0
| |
* | Merge pull request #1898 from rabbitmq/defend-conn-created-trackingLuke Bakken2019-02-251-7/+19
|\ \ | |/ |/| Handle premature connection termination in connection tracking handler
| * Handle premature termination in conn tracking handlerGerhard Lazu2019-02-251-7/+19
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Handle mixed version clusters in test suitekjnilsson2019-02-211-4/+10
|
* rabbit_fifo: formattingkjnilsson2019-02-211-52/+61
| | | | Make it more readable for people that use split buffers.
* Merge pull request #1883 from rabbitmq/unavailable-qq-publish-fixMichael Klishin2019-02-213-12/+80
|\ | | | | Fix channel liveness issue when publishing to an unavailable quorum queue
| * Merge branch 'master' into unavailable-qq-publish-fixMichael Klishin2019-02-2117-138/+558
| |\ | |/ |/|
* | Merge pull request #1894 from rabbitmq/quorum-queue-grow-cmdMichael Klishin2019-02-213-19/+262
|\ \ | | | | | | Quorum queue grow and shrink commands
| * | Quorum queue shrinking/growing: improve log messagesMichael Klishin2019-02-211-4/+4
| | |
| * | Merge branch 'master' into quorum-queue-grow-cmdMichael Klishin2019-02-211-2/+6
| |\ \
| * | | Change rabbit_quorum_queue:grow/3kjnilsson2019-02-202-9/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]
| * | | Add integration test for grow commandkjnilsson2019-02-201-63/+30
| | | |
| * | | Add rabbit_quorum_queue:grow/4 functionkjnilsson2019-02-201-3/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | To allow operators to grow quorum queue clusters with some degree of selection. [#162782801]
| * | | Rename test suite for consistencyMichael Klishin2019-02-201-1/+1
| | | |
| * | | Quorum queue suite: CT logging tweaksMichael Klishin2019-02-201-4/+1
| | | |
| * | | Merge branch 'master' into pre-node-removal-toolMichael Klishin2019-02-1913-116/+274
| |\ \ \
| * | | | Add cluster size to shrink resultkjnilsson2019-02-193-6/+163
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also add rabbitmq-queue integration test for shrink command. [#162782789]
| * | | | Disallow removal of the last quorum memberkjnilsson2019-02-142-19/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also change formatting. [#162782789]
| * | | | Add shrink_all/1 functionkjnilsson2019-02-142-4/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That takes a node and removes all quorum queue members for this node and returns an list of results for each queue. [#162782789]
* | | | | rabbitmq-env: Pass remote node name ro child rabbitmqctl(8)Jean-Sébastien Pédron2019-02-201-1/+16
| |_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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).
* | | | Improve queue index migrationMichael Klishin2019-02-191-2/+6
| |/ / |/| | | | | | | | | | | | | | | | | | | | 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.
* | | Merge pull request #1886 from Ayanda-D/channel-sourceMichael Klishin2019-02-194-48/+217
|\ \ \ | | | | | | | | Avoid synchronous channel request to connection process
| * | | add test for 'network' type arbitrary channel sourcesAyanda Dube2019-02-181-0/+24
| | | |
| * | | store and retrieve channel source from stateAyanda Dube2019-02-182-80/+85
| | | |
| * | | Introduce originating source to channels, to help avoidAyanda Dube2019-02-184-3/+143
| | | | | | | | | | | | | | | | synchronous channel requests back to the connection process
* | | | Merge pull request #1888 from rabbitmq/rabbitmq-server-1887Michael Klishin2019-02-181-8/+10
|\ \ \ \ | |/ / / |/| | | Check exclusive owner before durable argument
| * | | GrammarMichael Klishin2019-02-181-1/+1
| | | |
| * | | Queue ownership check: provide more details in the messaageMichael Klishin2019-02-181-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | Check exclusive owner before durable argumentLuke Bakken2019-02-181-7/+7
|/ / / | | | | | | | | | Fixes #1887
* | | Merge pull request #1878 from rabbitmq/rabbitmq-server-1873-binding-recoveryMichael Klishin2019-02-174-15/+23
|\ \ \ | | | | | | | | Recover bindings for all durable queues including failed to recover.
| * \ \ Merge branch 'master' into rabbitmq-server-1873-binding-recoveryMichael Klishin2019-02-1612-144/+80
| |\ \ \ | |/ / / |/| | |
* | | | Merge pull request #1884 from rabbitmq/allow_binding_if_tables_inconsistentMichael Klishin2019-02-161-15/+13
|\ \ \ \ | | | | | | | | | | Do not fail on bind/unbind operations if the binding records are inconsistent.
| * | | | Revert error handling removal for backwards compatibility.Daniil Fedotov2019-02-151-0/+5
| | | | | | | | | | | | | | | | | | | | Older versions still can return binding_not_found error.
| * | | | Do not fail on bind/unbind operations if the binding records are inconsistent.Daniil Fedotov2019-02-142-20/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]
* | | | | Filter duplicate default exchange binding in ↵Michael Klishin2019-02-161-4/+7
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `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.
* | | | Merge pull request #1882 from rabbitmq/rabbitmq-server_conf_exampleMichael Klishin2019-02-141-3/+3
|\ \ \ \ | | | | | | | | | | Remove inet_dist_listen_* configuration