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 | 9e4a1b80e24b90d5c84218a070c3ce61ce3fa99f (patch) | |
tree | 1d0581bd2fd7771ee28dde84cb28f067e7e647c6 | |
parent | 588f04825a17950f7645a2a79b30e6277d5f4368 (diff) | |
download | rabbitmq-server-9e4a1b80e24b90d5c84218a070c3ce61ce3fa99f.tar.gz |
Comment lists:keysort in delete_queue_bindings
-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 9af7a7a0..621162f6 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) |