]> 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:12:44 +0000 (09:12 +0000)
committerChristophe Romain <christophe.romain@process-one.net>
Fri, 25 Jul 2008 09:12:44 +0000 (09:12 +0000)
SVN Revision: 1491

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

index cefe351f19e6735ac968f947f671e3571f1725b3..09efea45edfcdd735783c343ecd98a7932ea72a1 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 5df46172d8d593902014da71f0643e0559d92f42..7cdb9cd060b680dc2d52c59be3e37db816087e8c 100644 (file)
@@ -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)
index 6dec6c5e47373672c8ba2ffe63d1626b3489854f..36b763df813e36c143a4033a8133acdff88a900f 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
@@ -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()