[Tarantool-patches] [PATCH vshard 7/6] util: truncate too long fiber name

Vladislav Shpilevoy v.shpilevoy at tarantool.org
Sat Jul 3 00:36:20 MSK 2021


Since tarantool's commit 008658b349264538f76327f8d60f2db5451854ea
("fiber: throw an error on too long fiber name") in version 1.7.6
fiber:name() fails if the name is too long. But the error can be
suppressed by using {truncate = true} option.

The patch makes vshard truncate too long names instead of throwing
an error.
---
 test/unit/util.result   | 10 ++++++++++
 test/unit/util.test.lua |  5 +++++
 vshard/util.lua         |  2 +-
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/test/unit/util.result b/test/unit/util.result
index c83e80c..ec61e8a 100644
--- a/test/unit/util.result
+++ b/test/unit/util.result
@@ -71,6 +71,16 @@ test_run:grep_log('default', 'reloadable_function has been started', 1000)
 fib:cancel()
 ---
 ...
+-- Re-loadable fiber must truncate too long name.
+name = string.rep('a', 512)
+---
+...
+fib = util.reloadable_fiber_create(name, fake_M, 'reloadable_function')
+---
+...
+fib:cancel()
+---
+...
 -- Yielding table minus.
 minus_yield = util.table_minus_yield
 ---
diff --git a/test/unit/util.test.lua b/test/unit/util.test.lua
index 881feb4..5432c0d 100644
--- a/test/unit/util.test.lua
+++ b/test/unit/util.test.lua
@@ -28,6 +28,11 @@ while not test_run:grep_log('default', 'module is reloaded, restarting') do fibe
 test_run:grep_log('default', 'reloadable_function has been started', 1000)
 fib:cancel()
 
+-- Re-loadable fiber must truncate too long name.
+name = string.rep('a', 512)
+fib = util.reloadable_fiber_create(name, fake_M, 'reloadable_function')
+fib:cancel()
+
 -- Yielding table minus.
 minus_yield = util.table_minus_yield
 minus_yield({}, {}, 1)
diff --git a/vshard/util.lua b/vshard/util.lua
index 4d2c04e..afa658b 100644
--- a/vshard/util.lua
+++ b/vshard/util.lua
@@ -90,7 +90,7 @@ local function reloadable_fiber_create(fiber_name, module, func_name, data)
     assert(type(fiber_name) == 'string')
     local xfiber = fiber.create(reloadable_fiber_main_loop, module, func_name,
                                 data)
-    xfiber:name(fiber_name)
+    xfiber:name(fiber_name, {truncate = true})
     return xfiber
 end
 
-- 
2.24.3 (Apple Git-128)



More information about the Tarantool-patches mailing list