You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by rn...@apache.org on 2014/08/20 15:09:21 UTC

[13/14] couch-stats commit: updated refs/heads/master to bb24add

Simplify couch_stats_aggregator:reload_metrics/0

h/t davisp


Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch-stats/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch-stats/commit/30fd32cb
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch-stats/tree/30fd32cb
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch-stats/diff/30fd32cb

Branch: refs/heads/master
Commit: 30fd32cb12ab7707ce97efd66215921bb1bb4ea3
Parents: 6efb035
Author: Benjamin Anderson <b...@banjiewen.net>
Authored: Wed Feb 12 09:32:22 2014 -0800
Committer: Robert Newson <rn...@apache.org>
Committed: Tue Aug 19 14:48:31 2014 +0100

----------------------------------------------------------------------
 src/couch_stats_aggregator.erl | 31 +++++++++++++++----------------
 1 file changed, 15 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-couch-stats/blob/30fd32cb/src/couch_stats_aggregator.erl
----------------------------------------------------------------------
diff --git a/src/couch_stats_aggregator.erl b/src/couch_stats_aggregator.erl
index 09ca572..4c7168d 100644
--- a/src/couch_stats_aggregator.erl
+++ b/src/couch_stats_aggregator.erl
@@ -68,25 +68,24 @@ code_change(_OldVsn, State, _Extra) ->
     {ok, State}.
 
 reload_metrics() ->
-    Existing = couch_stats:list(),
     Current = load_metrics_for_applications(),
-    ToDelete = lists:foldl(
-        fun({Name, Props}=Stat, Acc) ->
+    CurrentSet = sets:from_list(Current),
+    ExistingSet = sets:from_list(couch_stats:list()),
+    ToDelete = sets:subtract(ExistingSet, CurrentSet),
+    ToCreate = sets:subtract(CurrentSet, ExistingSet),
+    sets:fold(
+        fun({Name, _}, _) -> couch_stats:delete(Name), nil end,
+        nil,
+        ToDelete
+    ),
+    sets:fold(
+        fun({Name, Props}, _) ->
             Type = proplists:get_value(type, Props),
-            case sets:is_element(Stat, Acc) of
-                true ->
-                    sets:del_element(Stat, Acc);
-                false ->
-                    couch_stats:new(Type, Name),
-                    Acc
-            end
+            couch_stats:new(Type, Name),
+            nil
         end,
-        sets:from_list(Existing),
-        Current
-    ),
-    lists:foreach(
-        fun({Name, _}) -> couch_stats:delete(Name) end,
-        sets:to_list(ToDelete)
+        nil,
+        ToCreate
     ),
     {ok, Current}.