end
def unsubscribe(db, realm, {id, _from} = value, subscriptions) do
- {_id, topic, wc} = sub = get_subscription(id, subscriptions)
-
- key =
- case wc do
- true ->
- get_wildcard_key(topic)
-
- false ->
- topic
- end
-
- ClusterKV.update(db, realm, key, value, :remove)
- remove_val(sub, subscriptions)
+ case get_subscription(id, subscriptions) do
+ {_id, topic, wc} = sub ->
+ key =
+ case wc do
+ true ->
+ get_wildcard_key(topic)
+
+ false ->
+ topic
+ end
+
+ ClusterKV.update(db, realm, key, value, :remove)
+ remove_val(sub, subscriptions)
+
+ _ ->
+ Logger.error("Unable to unsubscribe #{id} not present in subscriptions: #{subscriptions}")
+ subscriptions
+ end
end
def subscriptions(db, realm, topic) do
}
} = data
) do
- {call_id, _, {pid, node}} =
- Enum.find(inv, fn
- {_, %Invocation{request_id: ^id}, _} -> true
- _ -> false
- end)
+ case Enum.find(inv, fn
+ {_, %Invocation{request_id: ^id}, _} -> true
+ _ -> false
+ end) do
+ {call_id, _, {pid, node}} ->
+ send(
+ {proxy, node},
+ {%Result{request_id: call_id, arg_list: arg_l, arg_kw: arg_kw, details: opts}, pid}
+ )
- send(
- {proxy, node},
- {%Result{request_id: call_id, arg_list: arg_l, arg_kw: arg_kw, details: opts}, pid}
- )
+ Logger.info("Yield: #{realm} - #{id}")
+
+ _ ->
+ Logger.error("Unable to yield: #{id} not present in invocations: #{inspect(inv)}")
+ :ok
+ end
inv =
Enum.filter(inv, fn
_ -> true
end)
- Logger.info("Yield: #{realm} - #{id}")
{:ok, %SL{data | data: %Sess{data.data | invocations: inv, yield: nil}}, [{:next_event, :internal, :transition}]}
end