Commit 4cef5a6
committed
Fix concurrent AMQP queue declarations (#13727)
* Fix concurrent AMQP queue declarations
Prior to this commit, when AMQP clients declared the same queues
concurrently, the following crash occurred:
```
│ *Error{Condition: amqp:internal-error, Description: {badmatch,{<<"200">>,
│ {map,[{{utf8,<<"leader">>},{utf8,<<"rabbit-2@carrot">>}},
│ {{utf8,<<"message_count">>},{ulong,0}},
│ {{utf8,<<"consumer_count">>},{uint,0}},
│ {{utf8,<<"name">>},{utf8,<<"cq-145">>}},
│ {{utf8,<<"vhost">>},{utf8,<<"/">>}},
│ {{utf8,<<"durable">>},{boolean,true}},
│ {{utf8,<<"auto_delete">>},{boolean,false}},
│ {{utf8,<<"exclusive">>},{boolean,false}},
│ {{utf8,<<"type">>},{utf8,<<"classic">>}},
│ {{utf8,<<"arguments">>},
│ {map,[{{utf8,<<"x-queue-type">>},{utf8,<<"classic">>}}]}},
│ {{utf8,<<"replicas">>},
│ {array,utf8,[{utf8,<<"rabbit-2@carrot">>}]}}]},
│ {[{{resource,<<"/">>,queue,<<"cq-145">>},configure},
│ {{resource,<<"/">>,queue,<<"cq-144">>},configure},
│ {{resource,<<"/">>,queue,<<"cq-143">>},configure},
│ {{resource,<<"/">>,queue,<<"cq-142">>},configure},
│ {{resource,<<"/">>,queue,<<"cq-141">>},configure},
│ {{resource,<<"/">>,queue,<<"cq-140">>},configure},
│ {{resource,<<"/">>,queue,<<"cq-139">>},configure},
│ {{resource,<<"/">>,queue,<<"cq-138">>},configure},
│ {{resource,<<"/">>,queue,<<"cq-137">>},configure},
│ {{resource,<<"/">>,queue,<<"cq-136">>},configure},
│ {{resource,<<"/">>,queue,<<"cq-135">>},configure},
│ {{resource,<<"/">>,queue,<<"cq-134">>},configure}],
│ []}}}
│ [{rabbit_amqp_management,handle_http_req,8,
│ [{file,"rabbit_amqp_management.erl"},{line,130}]},
│ {rabbit_amqp_management,handle_request,5,
│ [{file,"rabbit_amqp_management.erl"},{line,43}]},
│ {rabbit_amqp_session,incoming_mgmt_link_transfer,3,
│ [{file,"rabbit_amqp_session.erl"},{line,2317}]},
│ {rabbit_amqp_session,handle_frame,2,
│ [{file,"rabbit_amqp_session.erl"},{line,963}]},
│ {rabbit_amqp_session,handle_cast,2,
│ [{file,"rabbit_amqp_session.erl"},{line,539}]},
│ {gen_server,try_handle_cast,3,[{file,"gen_server.erl"},{line,2371}]},
│ {gen_server,handle_msg,6,[{file,"gen_server.erl"},{line,2433}]},
│ {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,329}]}], Info: map[]}
```
To repro, run the following command in parallel in two separate terminals:
```
./omq amqp -x 10000 -t /queues/cq-%d -y 0 -C 0 --queues classic classic
```
* Simplify
(cherry picked from commit 6eb1f87)1 parent abdcd47 commit 4cef5a6
File tree
2 files changed
+50
-12
lines changed- deps
- rabbitmq_amqp_client/test
- rabbit/src
2 files changed
+50
-12
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
127 | 127 | | |
128 | 128 | | |
129 | 129 | | |
130 | | - | |
131 | 130 | | |
132 | 131 | | |
133 | 132 | | |
134 | 133 | | |
135 | 134 | | |
136 | 135 | | |
137 | 136 | | |
138 | | - | |
| 137 | + | |
| 138 | + | |
139 | 139 | | |
140 | 140 | | |
141 | 141 | | |
| |||
146 | 146 | | |
147 | 147 | | |
148 | 148 | | |
149 | | - | |
| 149 | + | |
| 150 | + | |
150 | 151 | | |
151 | 152 | | |
152 | 153 | | |
153 | 154 | | |
154 | | - | |
| 155 | + | |
| 156 | + | |
155 | 157 | | |
156 | 158 | | |
157 | 159 | | |
158 | 160 | | |
159 | | - | |
| 161 | + | |
| 162 | + | |
160 | 163 | | |
161 | 164 | | |
162 | 165 | | |
163 | 166 | | |
164 | 167 | | |
165 | | - | |
| 168 | + | |
166 | 169 | | |
167 | 170 | | |
168 | 171 | | |
| |||
177 | 180 | | |
178 | 181 | | |
179 | 182 | | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | | - | |
| 183 | + | |
184 | 184 | | |
185 | 185 | | |
186 | 186 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
| 55 | + | |
55 | 56 | | |
56 | 57 | | |
57 | 58 | | |
| |||
432 | 433 | | |
433 | 434 | | |
434 | 435 | | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
435 | 470 | | |
436 | 471 | | |
437 | 472 | | |
| |||
859 | 894 | | |
860 | 895 | | |
861 | 896 | | |
862 | | - | |
| 897 | + | |
863 | 898 | | |
864 | 899 | | |
865 | 900 | | |
866 | | - | |
| 901 | + | |
867 | 902 | | |
868 | 903 | | |
869 | 904 | | |
| |||
1115 | 1150 | | |
1116 | 1151 | | |
1117 | 1152 | | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
0 commit comments