From 5e0f9525991f5d122424922311bc3c0775ebfbb7 Mon Sep 17 00:00:00 2001
From: Georgy Moshkin <gmoshkin@picodata.io>
Date: Fri, 14 Apr 2023 10:18:06 +0300
Subject: [PATCH] iproto: request handlers set the fiber name to proc name

NO_DOC=picodata internal patch
NO_CHANGELOG=picodata internal patch
NO_TEST=picodata internal patch
---
 src/box/iproto.cc                             | 12 +++++++++++-
 test/box-luatest/gh_7860_syslog_json_test.lua |  4 ++--
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/box/iproto.cc b/src/box/iproto.cc
index 54ef40356d..39b492734f 100644
--- a/src/box/iproto.cc
+++ b/src/box/iproto.cc
@@ -2321,18 +2321,28 @@ tx_process_call(struct cmsg *m)
 	int rc;
 	struct port port;
 
+	char fiber_name_sv[FIBER_NAME_MAX];
+	strlcpy(&fiber_name_sv[0], fiber_name(fiber()), FIBER_NAME_MAX);
+
 	switch (msg->header.type) {
 	case IPROTO_CALL:
-	case IPROTO_CALL_16:
+	case IPROTO_CALL_16: {
+		const char *proc_name = msg->call.name;
+		uint32_t len = mp_decode_strl(&proc_name);
+		fiber_set_name_n(fiber(), proc_name, len);
 		rc = box_process_call(&msg->call, &port);
 		break;
+	}
 	case IPROTO_EVAL:
+		fiber_set_name(fiber(), "(lua eval)");
 		rc = box_process_eval(&msg->call, &port);
 		break;
 	default:
 		unreachable();
 	}
 
+	fiber_set_name(fiber(), &fiber_name_sv[0]);
+
 	trigger_clear(&fiber_on_yield);
 
 	if (rc != 0)
diff --git a/test/box-luatest/gh_7860_syslog_json_test.lua b/test/box-luatest/gh_7860_syslog_json_test.lua
index bd450f49a4..daaadfb2c0 100644
--- a/test/box-luatest/gh_7860_syslog_json_test.lua
+++ b/test/box-luatest/gh_7860_syslog_json_test.lua
@@ -51,7 +51,7 @@ g.before_all(function(cg)
         result.file = nil
         t.assert_equals(result, {
             cord_name = 'main',
-            fiber_name = 'main',
+            fiber_name = '(lua eval)',
             line = 29,
             level = 'WARN',
             message = expected_msg,
@@ -66,7 +66,7 @@ g.before_all(function(cg)
         t.assert_str_matches(
             hdr,
             '<%d+>%a+%s+%d%d?%s+%d%d:%d%d:%d%d%s+tt%[' .. cg.pid .. '%]:%s' ..
-            'main/%d+/main/test%.box%-luatest%.gh_7860_syslog_json_test%s' ..
+            'main/%d+/%(lua eval%)/test%.box%-luatest%.gh_7860_syslog_json_test%s' ..
             'gh_7860_syslog_json_test%.lua:29')
         t.assert_equals(msg, expected_msg .. '\n')
     end
-- 
GitLab