diff options
author | Nick Vatamaniuc <vatamane@apache.org> | 2017-06-16 14:36:46 -0400 |
---|---|---|
committer | Nick Vatamaniuc <vatamane@apache.org> | 2017-06-16 15:56:07 -0400 |
commit | bb3767689259f1cad6d8c7e0746c0d0e38d72f86 (patch) | |
tree | 437968d5d22316e6951decf4238c43acb94107b7 | |
parent | edbddc43f02fe4b02210bc9da02253642f3fb2fb (diff) | |
download | couchdb-bb3767689259f1cad6d8c7e0746c0d0e38d72f86.tar.gz |
Save IO logs even if exit reason is
-rw-r--r-- | src/couch/src/couch_io_logger.erl | 9 | ||||
-rw-r--r-- | src/couch/src/couch_os_process.erl | 3 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/couch/src/couch_io_logger.erl b/src/couch/src/couch_io_logger.erl index 387b23195..a8f44b7be 100644 --- a/src/couch/src/couch_io_logger.erl +++ b/src/couch/src/couch_io_logger.erl @@ -87,7 +87,10 @@ log_name() -> close_logs() -> file:close(get(logger_out_fd)), - file:close(get(logger_in_fd)). + file:close(get(logger_in_fd)), + erase(logger_path), + erase(logger_out_fd), + erase(logger_in_fd). save_error_logs(Path, Err) -> @@ -98,8 +101,8 @@ save_error_logs(Path, Err) -> OFd = get(logger_in_fd), file:position(IFd, 0), file:position(OFd, 0), - file:copy(IFd, Path ++ ".out.log"), - file:copy(OFd, Path ++ ".in.log"), + file:copy(IFd, Path ++ ".in.log"), + file:copy(OFd, Path ++ ".out.log"), couch_log:error("XXXXXXXXXXXXXXXXX saved error log ~p ~p", [Path, Err]). diff --git a/src/couch/src/couch_os_process.erl b/src/couch/src/couch_os_process.erl index fb1f1427f..4640b3589 100644 --- a/src/couch/src/couch_os_process.erl +++ b/src/couch/src/couch_os_process.erl @@ -204,8 +204,10 @@ handle_call({prompt, Data}, _From, #os_proc{idle=Idle}=OsProc) -> throw:{error, OsError} -> {reply, OsError, OsProc, Idle}; throw:{fatal, OsError} -> + couch_io_logger:stop_error(OsError), {stop, normal, OsError, OsProc}; throw:OtherError -> + couch_io_logger:stop_error(OtherError), {stop, normal, OtherError, OsProc} after garbage_collect() @@ -218,6 +220,7 @@ handle_cast({send, Data}, #os_proc{writer=Writer, idle=Idle}=OsProc) -> catch throw:OsError -> couch_log:error("Failed sending data: ~p -> ~p", [Data, OsError]), + couch_io_logger:stop_error(OsError), {stop, normal, OsProc} end; handle_cast(garbage_collect, #os_proc{idle=Idle}=OsProc) -> |