diff options
| author | Matthias Radestock <matthias@rabbitmq.com> | 2010-08-19 12:28:48 +0100 |
|---|---|---|
| committer | Matthias Radestock <matthias@rabbitmq.com> | 2010-08-19 12:28:48 +0100 |
| commit | 9c68dd79bbc747d59ec26d105b23d55a4b7d4d9c (patch) | |
| tree | afb64f81f9750bd5a9789dea64851a1e54c5bd6f | |
| parent | db5012819afb3287ddfdd0004f95b3e2db79edbc (diff) | |
| download | rabbitmq-server-git-9c68dd79bbc747d59ec26d105b23d55a4b7d4d9c.tar.gz | |
once again allow use of fhc w/o registering
| -rw-r--r-- | src/file_handle_cache.erl | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/file_handle_cache.erl b/src/file_handle_cache.erl index e51ce9218a..dd693cb4a7 100644 --- a/src/file_handle_cache.erl +++ b/src/file_handle_cache.erl @@ -751,8 +751,9 @@ handle_call({open, Pid, EldestUnusedSince, CanClose}, From, elders = Elders }) -> Elders1 = dict:store(Pid, EldestUnusedSince, Elders), Item = {open, Pid, From}, - case maybe_reduce(State #fhc_state { open_count = Count + 1, - elders = Elders1 }) of + case maybe_reduce(ensure_mref(Pid, State #fhc_state { + open_count = Count + 1, + elders = Elders1 })) of {true, State1} -> State2 = State1 #fhc_state { open_count = Count }, case CanClose of @@ -933,8 +934,10 @@ maybe_reduce(State = #fhc_state { limit = Limit, _ -> AverageAge = Sum / ClientCount, lists:foreach( fun (Pid) -> - {M, F, A} = dict:fetch(Pid, Callbacks), - apply(M, F, A ++ [AverageAge]) + case dict:find(Pid, Callbacks) of + error -> ok; + {ok, {M, F, A}} -> apply(M, F, A ++ [AverageAge]) + end end, Pids) end, AboveLimit = Limit =/= infinity andalso OpenCount + ObtainCount > Limit, |
