]> granicus.if.org Git - ejabberd/commitdiff
Speedup startup with many pubsub nodes (EJAB-669)
authorChristophe Romain <christophe.romain@process-one.net>
Fri, 25 Jul 2008 09:06:09 +0000 (09:06 +0000)
committerChristophe Romain <christophe.romain@process-one.net>
Fri, 25 Jul 2008 09:06:09 +0000 (09:06 +0000)
SVN Revision: 1490

ChangeLog
src/mod_pubsub/mod_pubsub.erl
src/mod_pubsub/nodetree_default.erl

index 4a6bf0371f6294d397b300a1d274a61e65c911ec..c274b80c676568842a4d2326a304c26627a5a72a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-07-25  Christophe Romain  <christophe.romain@process-one.net>
+
+       * 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  <badlop@process-one.net>
 
        * doc/guide.tex: Include example PAM configuration file
index fc4df8fe589f58ba7659c65def55c1893601fe61..77f44a6982bc866969aaaa7306ab0fbb1484c57c 100644 (file)
@@ -286,8 +286,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)
index 732e72b3f89fb85ec38ddb3ccbe5a6e922beaaf1..d80d215e6e72ef3f4aaf666f5ba8715b7c43311f 100644 (file)
@@ -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
@@ -114,7 +113,7 @@ get_nodes(Key) ->
 %%     Host = mod_pubsub:host()
 %%     Node = mod_pubsub:pubsubNode()
 get_subnodes(Host, Node) ->
-    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()