summaryrefslogtreecommitdiff
path: root/src/rabbit_msg_store_gc.erl
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2010-04-30 15:41:29 +0100
committerMatthew Sackman <matthew@lshift.net>2010-04-30 15:41:29 +0100
commitd5bbe15ace639acf8de45ab5e823c54afbc1ad25 (patch)
treef5eb7e85369559208e10b1c1a09f7661f6b7ba44 /src/rabbit_msg_store_gc.erl
parent381262e9bd8731d2b138d830d1d8683b499f81f3 (diff)
downloadrabbitmq-server-d5bbe15ace639acf8de45ab5e823c54afbc1ad25.tar.gz
Make the msg_store_gc register an fhc callback
Diffstat (limited to 'src/rabbit_msg_store_gc.erl')
-rw-r--r--src/rabbit_msg_store_gc.erl13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/rabbit_msg_store_gc.erl b/src/rabbit_msg_store_gc.erl
index 32ea0014..ca5e2c6f 100644
--- a/src/rabbit_msg_store_gc.erl
+++ b/src/rabbit_msg_store_gc.erl
@@ -35,6 +35,8 @@
-export([start_link/4, gc/3, stop/1]).
+-export([set_maximum_since_use/2]).
+
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
@@ -61,9 +63,14 @@ gc(Server, Source, Destination) ->
stop(Server) ->
gen_server2:call(Server, stop, infinity).
+set_maximum_since_use(Pid, Age) ->
+ gen_server2:pcast(Pid, 8, {set_maximum_since_use, Age}).
+
%%----------------------------------------------------------------------------
init([Parent, Dir, IndexState, IndexModule, FileSummaryEts]) ->
+ ok = file_handle_cache:register_callback(?MODULE, set_maximum_since_use,
+ [self()]),
{ok, #gcstate { dir = Dir, index_state = IndexState,
index_module = IndexModule, parent = Parent,
file_summary_ets = FileSummaryEts},
@@ -80,11 +87,11 @@ handle_cast({gc, Source, Destination}, State =
Reclaimed = rabbit_msg_store:gc(Source, Destination,
{FileSummaryEts, Dir, Index, IndexState}),
ok = rabbit_msg_store:gc_done(Parent, Reclaimed, Source, Destination),
- {noreply, State, hibernate}.
+ {noreply, State, hibernate};
-handle_info({file_handle_cache, maximum_eldest_since_use, Age}, State) ->
+handle_cast({set_maximum_since_use, Age}, State) ->
ok = file_handle_cache:set_maximum_since_use(Age),
- {noreply, State, hibernate};
+ {noreply, State, hibernate}.
handle_info(Info, State) ->
{stop, {unhandled_info, Info}, State}.