diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2014-01-22 12:03:00 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2014-01-22 12:03:00 +0000 |
| commit | bc9eca45e6df30f8eb76f4f19901514b10f58615 (patch) | |
| tree | 9e2285407ff4d87f3b396c49983794dc14437ecd /src/dtree.erl | |
| parent | 8295c1acb90cac66ab159c2bd5c1aa66019666da (diff) | |
| download | rabbitmq-server-git-bc9eca45e6df30f8eb76f4f19901514b10f58615.tar.gz | |
Don't explode when there is more than one queue to route to!
Diffstat (limited to 'src/dtree.erl')
| -rw-r--r-- | src/dtree.erl | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/dtree.erl b/src/dtree.erl index f39d8e3ac9..436bac558f 100644 --- a/src/dtree.erl +++ b/src/dtree.erl @@ -121,10 +121,13 @@ take_all(SK, {P, S}) -> {KVs, {P1, prune(SKS, PKS, S)}} end. -%% Drop all entries for the given primary key. +%% Drop all entries for the given primary key (which does not have to exist). drop(PK, {P, S}) -> - SKS = gb_trees:get(PK, P), - {gb_trees:delete(PK, P), prune(SKS, gb_sets:singleton(PK), S)}. + case gb_trees:lookup(PK, P) of + none -> {P, S}; + {value, SKS} -> {gb_trees:delete(PK, P), + prune(SKS, gb_sets:singleton(PK), S)} + end. is_defined(SK, {_P, S}) -> gb_trees:is_defined(SK, S). |
