[PATCH v1] test: app/socket flaky fails at 1118 line

Alexander V. Tikhonov avtikhon at tarantool.org
Wed Aug 14 08:27:59 MSK 2019


Found that on hard loaded hosts the test flaky fails at:

[004] --- app/socket.result	Mon Jul 15 07:18:57 2019
[004] +++ app/socket.reject	Tue Jul 16 16:37:35 2019
[004] @@ -1118,7 +1118,7 @@
[004]  ...
[004]  ch:get(1)
[004]  ---
[004] -- true
[004] +- null
[004]  ...
[004]  s:error()
[004]  ---

The issue was found at the fiber function:

f = fiber.create(function() s:read(12) ch:put(true) end)

that reads from socket and puts into the fiber with possible
delay which caused the issue. To aovid of it the fiber
function must be called in one shot by using the 'setopt
delimiter' functionality.

Fixes #4354
---

Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh-4354-1118-app-socket
Issue: https://github.com/tarantool/tarantool/issues/4353

 test/app/socket.result   | 13 ++++++++++++-
 test/app/socket.test.lua |  7 ++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/test/app/socket.result b/test/app/socket.result
index 77eff7370..138946158 100644
--- a/test/app/socket.result
+++ b/test/app/socket.result
@@ -1109,9 +1109,20 @@ s = socket.tcp_connect('127.0.0.1', port)
 ch = fiber.channel()
 ---
 ...
-f = fiber.create(function() s:read(12) ch:put(true) end)
+test_run:cmd("setopt delimiter ';'")
+---
+- true
+...
+f = fiber.create(function()
+    s:read(12)
+    ch:put(true)
+end);
 ---
 ...
+test_run:cmd("setopt delimiter ''");
+---
+- true
+...
 s:close()
 ---
 - true
diff --git a/test/app/socket.test.lua b/test/app/socket.test.lua
index 7ae9a98aa..68ac4b4ac 100644
--- a/test/app/socket.test.lua
+++ b/test/app/socket.test.lua
@@ -359,7 +359,12 @@ test_run:cmd("setopt delimiter ''");
 
 s = socket.tcp_connect('127.0.0.1', port)
 ch = fiber.channel()
-f = fiber.create(function() s:read(12) ch:put(true) end)
+test_run:cmd("setopt delimiter ';'")
+f = fiber.create(function()
+    s:read(12)
+    ch:put(true)
+end);
+test_run:cmd("setopt delimiter ''");
 s:close()
 ch:get(1)
 s:error()
-- 
2.17.1




More information about the Tarantool-patches mailing list