summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Sébastien Pédron <jean-sebastien.pedron@dumbbell.fr>2016-04-26 17:10:05 +0200
committerJean-Sébastien Pédron <jean-sebastien.pedron@dumbbell.fr>2016-04-26 17:10:05 +0200
commit473beb92b3bd3b22dd26b565af19a49e1151f3d9 (patch)
tree143be685a9b15314c0d291aaad741c721fbe69aa
parent9099f8b5579d8b8839384bec6c2897df16a6be7e (diff)
parent5fb86319c444d459dee3606d56fbde335382f26e (diff)
downloadrabbitmq-server-git-473beb92b3bd3b22dd26b565af19a49e1151f3d9.tar.gz
Merge pull request #771 from rabbitmq/rabbitmq-server-crash-on-damaged-io
Improve notifications about damaged I/O subsystem
-rw-r--r--src/rabbit_log.erl18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/rabbit_log.erl b/src/rabbit_log.erl
index ed73a293ca..5b5468cab7 100644
--- a/src/rabbit_log.erl
+++ b/src/rabbit_log.erl
@@ -96,7 +96,7 @@ with_local_io(Fun) ->
Node = node(),
case node(GL) of
Node -> Fun();
- _ -> set_group_leader_to_user(),
+ _ -> set_group_leader_to_user_safely(whereis(user)),
try
Fun()
after
@@ -104,10 +104,12 @@ with_local_io(Fun) ->
end
end.
-set_group_leader_to_user() ->
- case whereis(user) of
- undefined ->
- warning("the 'user' I/O process has terminated, some features will fail until Erlang VM is restarted");
- User ->
- group_leader(User, self())
- end.
+set_group_leader_to_user_safely(undefined) ->
+ handle_damaged_io_system();
+set_group_leader_to_user_safely(User) when is_pid(User) ->
+ group_leader(User, self()).
+
+handle_damaged_io_system() ->
+ Msg = "Erlang VM I/O system is damaged, restart needed~n",
+ io:format(standard_error, Msg, []),
+ exit(erlang_vm_restart_needed).