From e08dbf82f657f7337acf964313fe88c5f748c98f Mon Sep 17 00:00:00 2001 From: Feng Date: Mon, 14 Mar 2016 15:48:39 +0800 Subject: [PATCH] remove a transaction --- src/emqttd_pubsub.erl | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/emqttd_pubsub.erl b/src/emqttd_pubsub.erl index e216a89fe..de421cfff 100644 --- a/src/emqttd_pubsub.erl +++ b/src/emqttd_pubsub.erl @@ -212,8 +212,7 @@ code_change(_OldVsn, State, _Extra) -> add_subscriber_(Topic, SubPid) -> case ets:member(subscriber, Topic) of false -> - mnesia:transaction(fun add_topic_/1, [Topic]), - emqttd_router:add_route(Topic, node()), + mnesia:transaction(fun add_topic_route_/2, [Topic, node()]), setstats(topic); true -> ok @@ -224,13 +223,15 @@ del_subscriber_(Topic, SubPid) -> ets:delete_object(subscriber, {Topic, SubPid}), case ets:lookup(subscriber, Topic) of [] -> - emqttd_router:del_route(Topic, node()), - mnesia:transaction(fun del_topic_/1, [Topic]), + mnesia:transaction(fun del_topic_route_/2, [Topic, node()]), setstats(topic); [_|_] -> ok end. +add_topic_route_(Topic, Node) -> + add_topic_(Topic), emqttd_router:add_route(Topic, Node). + add_topic_(Topic) -> add_topic_(Topic, []). @@ -241,6 +242,9 @@ add_topic_(Topic, Flags) -> [_] -> ok end. +del_topic_route_(Topic, Node) -> + emqttd_router:del_route(Topic, Node), del_topic_(Topic). + del_topic_(Topic) -> case emqttd_router:has_route(Topic) of true -> ok;