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.
This commit is contained in:
Justin M. Keyes
2025-03-24 17:48:19 +01:00
parent e73a3f1edc
commit c49162be59

View File

@ -521,7 +521,6 @@ void rpc_free(Channel *channel)
/// Logs a fatal error received from a channel, then closes the 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) 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++) { for (size_t i = 0; i < kv_size(channel->rpc.call_stack); i++) {
ChannelCallFrame *frame = kv_A(channel->rpc.call_stack, i); ChannelCallFrame *frame = kv_A(channel->rpc.call_stack, i);
frame->returned = true; 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); channel_close(channel->id, kChannelPartRpc, NULL);
LOG(loglevel, "RPC: %s", msg);
} }
static void serialize_request(Channel **chans, size_t nchans, uint32_t request_id, static void serialize_request(Channel **chans, size_t nchans, uint32_t request_id,