From: Christophe Romain Date: Fri, 25 Jul 2008 09:12:44 +0000 (+0000) Subject: Speedup startup with many pubsub nodes (EJAB-669) X-Git-Tag: v2.1.0~18^2~629 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c68baa953e2c0c0419b9eebddb8f385a02d00874;p=ejabberd Speedup startup with many pubsub nodes (EJAB-669) SVN Revision: 1491 --- diff --git a/ChangeLog b/ChangeLog index cefe351f1..09efea45e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-07-25 Christophe Romain + + * src/mod_pubsub/mod_pubsub.erl: Speedup startup with many pubsub + nodes (EJAB-669) + * src/mod_pubsub/nodetree_default.erl: Likewise + 2008-07-24 Badlop * doc/guide.tex: Include example PAM configuration file diff --git a/src/mod_pubsub/mod_pubsub.erl b/src/mod_pubsub/mod_pubsub.erl index 5df46172d..7cdb9cd06 100644 --- a/src/mod_pubsub/mod_pubsub.erl +++ b/src/mod_pubsub/mod_pubsub.erl @@ -283,8 +283,7 @@ update_database(Host) -> mnesia:delete_table(pubsub_node), mnesia:create_table(pubsub_node, [{disc_copies, [node()]}, - {attributes, record_info(fields, pubsub_node)}, - {index, [type, parentid]}]), + {attributes, record_info(fields, pubsub_node)}]), lists:foreach(fun(Record) -> mnesia:write(Record) end, NewRecords) diff --git a/src/mod_pubsub/nodetree_default.erl b/src/mod_pubsub/nodetree_default.erl index 6dec6c5e4..36b763df8 100644 --- a/src/mod_pubsub/nodetree_default.erl +++ b/src/mod_pubsub/nodetree_default.erl @@ -70,8 +70,7 @@ init(_Host, _ServerHost, _Opts) -> mnesia:create_table(pubsub_node, [{disc_copies, [node()]}, - {attributes, record_info(fields, pubsub_node)}, - {index, [type,parentid]}]), + {attributes, record_info(fields, pubsub_node)}]), NodesFields = record_info(fields, pubsub_node), case mnesia:table_info(pubsub_node, attributes) of [host_node, host_parent, info] -> ok; % old schema, updated later by pubsub @@ -115,7 +114,7 @@ get_nodes(Key) -> %% Node = mod_pubsub:pubsubNode() %% From = mod_pubsub:jid() get_subnodes(Host, Node, _From) -> - mnesia:index_read(pubsub_node, {Host, Node}, #pubsub_node.parentid). + mnesia:match_object(#pubsub_node{parentid = {Host, Node}, _ = '_'}). %% @spec (Host, Index) -> [pubsubNode()] | {error, Reason} %% Host = mod_pubsub:host()