summaryrefslogtreecommitdiff
path: root/deps/rabbit/src/rabbit_khepri.erl
diff options
context:
space:
mode:
Diffstat (limited to 'deps/rabbit/src/rabbit_khepri.erl')
-rw-r--r--deps/rabbit/src/rabbit_khepri.erl25
1 files changed, 14 insertions, 11 deletions
diff --git a/deps/rabbit/src/rabbit_khepri.erl b/deps/rabbit/src/rabbit_khepri.erl
index 443081a0a1..93f12d9834 100644
--- a/deps/rabbit/src/rabbit_khepri.erl
+++ b/deps/rabbit/src/rabbit_khepri.erl
@@ -1011,17 +1011,20 @@ register_rabbit_topic_graph_projection() ->
(Table, Path, #{data := OldBindings}, _NewProps) ->
[#topic_trie_edge{trie_edge = BindingTrieEdge} = BindingEdge | RestEdges] =
edges_for_path(Path, OldBindings),
- [#topic_trie_edge{node_id = {bindings, Bindings}}] =
- ets:lookup(Table, BindingTrieEdge),
- Bindings1 = sets:subtract(Bindings, OldBindings),
- case sets:is_empty(Bindings1) of
- true ->
- ets:delete_object(Table, BindingEdge),
- trim_while_out_degree_is_zero(RestEdges);
- false ->
- ToNodeId = {bindings, Bindings1},
- BindingEdge1 = BindingEdge#topic_trie_edge{node_id = ToNodeId},
- ets:insert(Table, BindingEdge1)
+ case ets:lookup(Table, BindingTrieEdge) of
+ [#topic_trie_edge{node_id = {bindings, Bindings}}] ->
+ Bindings1 = sets:subtract(Bindings, OldBindings),
+ case sets:is_empty(Bindings1) of
+ true ->
+ ets:delete_object(Table, BindingEdge),
+ trim_while_out_degree_is_zero(RestEdges);
+ false ->
+ ToNodeId = {bindings, Bindings1},
+ BindingEdge1 = BindingEdge#topic_trie_edge{node_id = ToNodeId},
+ ets:insert(Table, BindingEdge1)
+ end;
+ [] ->
+ trim_while_out_degree_is_zero(RestEdges)
end;
(_Table, _Path, _OldProps, _NewProps) ->
ok