I thought this was fixable with command line options?
-Damien
On Nov 3, 2009, at 12:15 PM, [email protected] wrote:
Author: kocolosk
Date: Tue Nov 3 17:15:37 2009
New Revision: 832477
URL: http://svn.apache.org/viewvc?rev=832477&view=rev
Log:
eliminate new process flood after OS wakes from sleep. COUCHDB-539
Modified:
couchdb/trunk/src/couchdb/couch_stats_aggregator.erl
Modified: couchdb/trunk/src/couchdb/couch_stats_aggregator.erl
URL:
http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_stats_aggregator.erl?rev=832477&r1=832476&r2=832477&view=diff
=
=
=
=
=
=
=
=
======================================================================
--- couchdb/trunk/src/couchdb/couch_stats_aggregator.erl (original)
+++ couchdb/trunk/src/couchdb/couch_stats_aggregator.erl Tue Nov 3
17:15:37 2009
@@ -86,7 +86,7 @@
to_json_term(?MODULE:get(Key, Time)).
collect_sample() ->
- gen_server:call(?MODULE, collect_sample).
+ gen_server:call(?MODULE, collect_sample, infinity).
init(StatDescsFileName) ->
@@ -115,13 +115,15 @@
Rate = list_to_integer(couch_config:get("stats", "rate", "1000")),
% TODO: Add timer_start to kernel start options.
- timer:apply_interval(Rate, ?MODULE, collect_sample, []).
+ {ok, TRef} = timer:apply_after(Rate, ?MODULE, collect_sample,
[]),
+ {ok, {TRef, Rate}}.
-terminate(_Reason, TRef) ->
+terminate(_Reason, {TRef, _Rate}) ->
timer:cancel(TRef),
ok.
-handle_call(collect_sample, _, State) ->
+handle_call(collect_sample, _, {_TRef, SampleInterval}) ->
+ {ok, TRef} = timer:apply_after(SampleInterval, ?MODULE,
collect_sample, []),
% Gather new stats values to add.
Incs = lists:map(fun({Key, Value}) ->
{Key, {incremental, Value}}
@@ -151,7 +153,7 @@
end,
ets:insert(?MODULE, {{Key, Rate}, NewAgg})
end, ets:tab2list(?MODULE)),
- {reply, ok, State}.
+ {reply, ok, {TRef, SampleInterval}}.
handle_cast(stop, State) ->
{stop, normal, State}.