diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2014-03-14 13:02:03 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2014-03-14 13:02:03 +0000 |
| commit | 20b3190e58168699efa8e644fd6fae68bd6e1abd (patch) | |
| tree | 3bb4292937e5d7a195736836608c02ef03b3635c | |
| parent | fb40d4bf283c74c00f73aa30f4f4baad52d027b7 (diff) | |
| parent | 0751818deace20ec336a5bcf7c0d2f376896f85d (diff) | |
| download | rabbitmq-server-git-20b3190e58168699efa8e644fd6fae68bd6e1abd.tar.gz | |
Merge bug26043
| -rwxr-xr-x | scripts/rabbitmq-server | 2 | ||||
| -rw-r--r-- | src/rabbit.erl | 12 | ||||
| -rw-r--r-- | src/rabbit_msg_store.erl | 7 | ||||
| -rw-r--r-- | src/rabbit_node_monitor.erl | 7 |
4 files changed, 19 insertions, 9 deletions
diff --git a/scripts/rabbitmq-server b/scripts/rabbitmq-server index b430eec3fa..72811adc7b 100755 --- a/scripts/rabbitmq-server +++ b/scripts/rabbitmq-server @@ -81,6 +81,8 @@ case "$(uname -s)" in fi esac +export RABBITMQ_CONFIG_FILE + RABBITMQ_EBIN_ROOT="${RABBITMQ_HOME}/ebin" if ! ${ERL_DIR}erl -pa "$RABBITMQ_EBIN_ROOT" \ -boot "${CLEAN_BOOT_FILE}" \ diff --git a/src/rabbit.erl b/src/rabbit.erl index bd4f1dbc88..fda3f51699 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -776,11 +776,15 @@ home_dir() -> end. config_files() -> + Abs = fun (F) -> + filename:absname(filename:rootname(F, ".config") ++ ".config") + end, case init:get_argument(config) of - {ok, Files} -> [filename:absname( - filename:rootname(File, ".config") ++ ".config") || - [File] <- Files]; - error -> [] + {ok, Files} -> [Abs(File) || [File] <- Files]; + error -> case os:getenv("RABBITMQ_CONFIG_FILE") of + false -> []; + File -> [Abs(File) ++ " (not found)"] + end end. %% We don't want this in fhc since it references rabbit stuff. And we can't put 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}. diff --git a/src/rabbit_node_monitor.erl b/src/rabbit_node_monitor.erl index 46dbd7b7a1..b9a7b44182 100644 --- a/src/rabbit_node_monitor.erl +++ b/src/rabbit_node_monitor.erl @@ -344,9 +344,10 @@ handle_dead_node(Node, State = #state{autoheal = Autoheal}) -> case application:get_env(rabbit, cluster_partition_handling) of {ok, pause_minority} -> case majority() of - true -> State; - false -> await_cluster_recovery() %% Does not really return - end; + true -> ok; + false -> await_cluster_recovery() + end, + State; {ok, ignore} -> State; {ok, autoheal} -> |
