From 5d09d23368d1a8d9eab5cb5a0b48490d38dfd7e1 Mon Sep 17 00:00:00 2001
From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Date: Thu, 22 Jun 2017 12:54:15 +0300
Subject: [PATCH] small: remove region.name

---
 src/fiber.c            |  4 ++--
 src/fiber.h            |  5 +++--
 src/lib/small          |  2 +-
 test/unit/fiber.cc     | 19 +++++++++++++++++++
 test/unit/fiber.result |  8 ++++++++
 5 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/src/fiber.c b/src/fiber.c
index 2d2237854d..2cf3140695 100644
--- a/src/fiber.c
+++ b/src/fiber.c
@@ -617,7 +617,7 @@ fiber_recycle(struct fiber *fiber)
 	assert(rlist_empty(&fiber->state));
 	bool has_custom_stack = fiber->flags & FIBER_CUSTOM_STACK;
 	fiber_reset(fiber);
-	fiber->gc.name[0] = '\0';
+	fiber->name[0] = '\0';
 	fiber->f = NULL;
 	memset(fiber->fls, 0, sizeof(fiber->fls));
 	unregister_fid(fiber);
@@ -692,7 +692,7 @@ void
 fiber_set_name(struct fiber *fiber, const char *name)
 {
 	assert(name != NULL);
-	region_set_name(&fiber->gc, name);
+	snprintf(fiber->name, sizeof(fiber->name), "%s", name);
 }
 
 extern inline void
diff --git a/src/fiber.h b/src/fiber.h
index ecfa78abf2..88747a52a1 100644
--- a/src/fiber.h
+++ b/src/fiber.h
@@ -50,7 +50,7 @@
 extern "C" {
 #endif /* defined(__cplusplus) */
 
-enum { FIBER_NAME_MAX = REGION_NAME_MAX };
+enum { FIBER_NAME_MAX = 30 };
 
 enum {
 	/**
@@ -384,6 +384,7 @@ struct fiber {
 	void *fls[FIBER_KEY_MAX];
 	/** Exception which caused this fiber's death. */
 	struct diag diag;
+	char name[FIBER_NAME_MAX];
 };
 
 enum { FIBER_CALL_STACK = 16 };
@@ -528,7 +529,7 @@ fiber_set_name(struct fiber *fiber, const char *name);
 static inline const char *
 fiber_name(struct fiber *f)
 {
-	return region_name(&f->gc);
+	return f->name;
 }
 
 bool
diff --git a/src/lib/small b/src/lib/small
index 2e8d1a0e84..da2aa2c97b 160000
--- a/src/lib/small
+++ b/src/lib/small
@@ -1 +1 @@
-Subproject commit 2e8d1a0e84fb863f56a233f0925cb0eb18a52d6a
+Subproject commit da2aa2c97bf76f73645326e9db36c4844bb5b691
diff --git a/test/unit/fiber.cc b/test/unit/fiber.cc
index 2e75e58337..790141178d 100644
--- a/test/unit/fiber.cc
+++ b/test/unit/fiber.cc
@@ -141,9 +141,28 @@ fiber_join_test()
 	footer();
 }
 
+void
+fiber_name_test()
+{
+	header();
+	note("name of a new fiber: %s.\n", fiber_name(fiber()));
+
+	fiber_set_name(fiber(), "Horace");
+
+	note("set new fiber name: %s.\n", fiber_name(fiber()));
+
+	fiber_set_name(fiber(), "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+		       "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+		       "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
+
+	note("fiber name is truncated: %s.\n", fiber_name(fiber()));
+	footer();
+}
+
 static int
 main_f(va_list ap)
 {
+	fiber_name_test();
 	fiber_join_test();
 	ev_break(loop(), EVBREAK_ALL);
 	return 0;
diff --git a/test/unit/fiber.result b/test/unit/fiber.result
index 2cd3fbc23d..9e597455b4 100644
--- a/test/unit/fiber.result
+++ b/test/unit/fiber.result
@@ -1,5 +1,13 @@
 #gh-1238: log uncaught errors
 SystemError Failed to allocate 42 bytes in allocator for exception: Cannot allocate memory
+	*** fiber_name_test ***
+# name of a new fiber: main.
+
+# set new region name: region.
+
+# fiber name is truncated: aaaaaaaaaaaaaaaaaaaaaaaaaaaaa.
+
+	*** fiber_name_test: done ***
 	*** fiber_join_test ***
 # exception propagated
 # cancel dead has started
-- 
GitLab