* [PATCH 1/1] netbox: raise an error on a closed connection async call
@ 2019-02-19 12:44 Vladislav Shpilevoy
2019-02-21 10:31 ` Vladimir Davydov
0 siblings, 1 reply; 2+ messages in thread
From: Vladislav Shpilevoy @ 2019-02-19 12:44 UTC (permalink / raw)
To: tarantool-patches; +Cc: vdavydov.dev
When a connection is closed, it should not allow any
requests - async and not. But before this patch this error
from netbox.perform_async_request was ignored.
---
Branch: https://github.com/tarantool/tarantool/tree/gerold103/fix-netbox-async-call
src/box/lua/net_box.lua | 9 +++++++--
test/box/net.box.result | 7 +++++++
test/box/net.box.test.lua | 5 +++++
3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/src/box/lua/net_box.lua b/src/box/lua/net_box.lua
index 2bf772aa8..b3139a3f5 100644
--- a/src/box/lua/net_box.lua
+++ b/src/box/lua/net_box.lua
@@ -1056,8 +1056,13 @@ function remote_methods:_request(method, opts, ...)
if opts.on_push or opts.on_push_ctx then
error('To handle pushes in an async request use future:pairs()')
end
- return transport.perform_async_request(buffer, method, table.insert,
- {}, ...)
+ local res, err =
+ transport.perform_async_request(buffer, method, table.insert,
+ {}, ...)
+ if err then
+ box.error(err)
+ end
+ return res
end
if opts.timeout then
-- conn.space:request(, { timeout = timeout })
diff --git a/test/box/net.box.result b/test/box/net.box.result
index 2b5a84646..6351898b3 100644
--- a/test/box/net.box.result
+++ b/test/box/net.box.result
@@ -2836,6 +2836,13 @@ future:wait_result(100)
c:close()
---
...
+--
+-- Check that is_async does not work on a closed connection.
+--
+c:call('any_func', {}, {is_async = true})
+---
+- error: Connection closed
+...
box.schema.user.revoke('guest', 'execute', 'universe')
---
...
diff --git a/test/box/net.box.test.lua b/test/box/net.box.test.lua
index 96d822820..6c527f506 100644
--- a/test/box/net.box.test.lua
+++ b/test/box/net.box.test.lua
@@ -1161,6 +1161,11 @@ finalize_long()
future:wait_result(100)
c:close()
+--
+-- Check that is_async does not work on a closed connection.
+--
+c:call('any_func', {}, {is_async = true})
+
box.schema.user.revoke('guest', 'execute', 'universe')
c = net:connect(box.cfg.listen)
--
2.17.2 (Apple Git-113)
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-02-21 10:31 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-19 12:44 [PATCH 1/1] netbox: raise an error on a closed connection async call Vladislav Shpilevoy
2019-02-21 10:31 ` Vladimir Davydov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox