From c49162be595852c04c56c14a1997e25ac69b7312 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Mon, 24 Mar 2025 17:48:19 +0100 Subject: [PATCH] fix(channel): log after (not before) channel-close Problem: chan_close_on_err() writes to the log file before peforming its actual work. This could be slightly misleading in terms of log timestamps, or could delay important work on Windows where file-open/write can be slow. Solution: Log after closing the channel, instead of before. --- src/nvim/msgpack_rpc/channel.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/nvim/msgpack_rpc/channel.c b/src/nvim/msgpack_rpc/channel.c index ff2d260808..fe480fff45 100644 --- a/src/nvim/msgpack_rpc/channel.c +++ b/src/nvim/msgpack_rpc/channel.c @@ -521,7 +521,6 @@ void rpc_free(Channel *channel) /// Logs a fatal error received from a channel, then closes the channel. static void chan_close_on_err(Channel *channel, char *msg, int loglevel) { - LOG(loglevel, "RPC: %s", msg); for (size_t i = 0; i < kv_size(channel->rpc.call_stack); i++) { ChannelCallFrame *frame = kv_A(channel->rpc.call_stack, i); frame->returned = true; @@ -530,6 +529,8 @@ static void chan_close_on_err(Channel *channel, char *msg, int loglevel) } channel_close(channel->id, kChannelPartRpc, NULL); + + LOG(loglevel, "RPC: %s", msg); } static void serialize_request(Channel **chans, size_t nchans, uint32_t request_id,