diff options
| author | Tony Garnock-Jones <tonyg@lshift.net> | 2009-11-23 14:53:22 +0000 |
|---|---|---|
| committer | Tony Garnock-Jones <tonyg@lshift.net> | 2009-11-23 14:53:22 +0000 |
| commit | 08a3a0dc08c22132482ebc4350b53444f711115e (patch) | |
| tree | 1d0581bd2fd7771ee28dde84cb28f067e7e647c6 /src | |
| parent | 75021f92951a14ccdc9e36e7b7ad1e026872ddc1 (diff) | |
| download | rabbitmq-server-git-08a3a0dc08c22132482ebc4350b53444f711115e.tar.gz | |
Comment lists:keysort in delete_queue_bindings
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_exchange.erl | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl index 9af7a7a008..621162f684 100644 --- a/src/rabbit_exchange.erl +++ b/src/rabbit_exchange.erl @@ -275,9 +275,16 @@ delete_queue_bindings(QueueName, FwdDeleteFun) -> #route{binding = #binding{queue_name = QueueName, _ = '_'}}), write)], + %% We need the keysort to group the bindings by exchange name, so + %% that cleanup_deleted_queue_bindings can inform the exchange of + %% its vanished bindings before maybe_auto_delete'ing the + %% exchange. ok = cleanup_deleted_queue_bindings(lists:keysort(#binding.exchange_name, DeletedBindings), none, []). +%% Requires that its input binding list is sorted in exchange-name +%% order, so that the grouping of bindings (for passing to +%% cleanup_deleted_queue_bindings1) works properly. cleanup_deleted_queue_bindings([], ExchangeName, Bindings) -> cleanup_deleted_queue_bindings1(ExchangeName, Bindings); cleanup_deleted_queue_bindings([B = #binding{exchange_name = N} | Rest], ExchangeName, Bindings) |
