diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2014-03-14 11:43:28 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2014-03-14 11:43:28 +0000 |
| commit | 0751818deace20ec336a5bcf7c0d2f376896f85d (patch) | |
| tree | 9fcf7e12d107aa79874a7073b4324e3dd415d4e3 | |
| parent | 478afcc66ecf20ee75345fb669e0818a8e0abedd (diff) | |
| parent | 4918d0ecb0e3c73386775c4b65a505026a747938 (diff) | |
| download | rabbitmq-server-git-0751818deace20ec336a5bcf7c0d2f376896f85d.tar.gz | |
Merge bug26066
| -rw-r--r-- | src/rabbit_msg_store.erl | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/rabbit_msg_store.erl b/src/rabbit_msg_store.erl index 9a4439a732..1562050c0e 100644 --- a/src/rabbit_msg_store.erl +++ b/src/rabbit_msg_store.erl @@ -781,6 +781,7 @@ handle_call({new_client_state, CRef, CPid, MsgOnDiskFun, CloseFDsFun}, _From, clients = Clients, gc_pid = GCPid }) -> Clients1 = dict:store(CRef, {CPid, MsgOnDiskFun, CloseFDsFun}, Clients), + erlang:monitor(process, CPid), reply({IndexState, IndexModule, Dir, GCPid, FileHandlesEts, FileSummaryEts, CurFileCacheEts, FlyingEts}, State #msstate { clients = Clients1 }); @@ -804,8 +805,6 @@ handle_cast({client_dying, CRef}, handle_cast({client_delete, CRef}, State = #msstate { clients = Clients }) -> - {CPid, _, _} = dict:fetch(CRef, Clients), - credit_flow:peer_down(CPid), State1 = State #msstate { clients = dict:erase(CRef, Clients) }, noreply(remove_message(CRef, CRef, clear_client(CRef, State1))); @@ -888,6 +887,10 @@ handle_info(sync, State) -> handle_info(timeout, State) -> noreply(internal_sync(State)); +handle_info({'DOWN', _MRef, process, Pid, _Reason}, State) -> + credit_flow:peer_down(Pid), + noreply(State); + handle_info({'EXIT', _Pid, Reason}, State) -> {stop, Reason, State}. |
