From ec772515607fc420df1cc30f6dca60f551af37cc Mon Sep 17 00:00:00 2001 From: Kurdakov Alexander <kusancho12@gmail.com> Date: Fri, 6 Sep 2024 13:31:27 +0300 Subject: [PATCH] fix: public lua functions should fail with error Previously some public lua functions in core-router.lua failed returning nil instead of an error. As a result in a case of error rust code treated it as success, but failed to pop expected results from lua stack. So, instead of a real error user got lua reading errors. Fixed. Co-authored-by: Denis Smirnov <sd@picodata.io> --- sbroad-core/src/core-router.lua | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sbroad-core/src/core-router.lua b/sbroad-core/src/core-router.lua index 5b89dd853..9c85a76c8 100644 --- a/sbroad-core/src/core-router.lua +++ b/sbroad-core/src/core-router.lua @@ -308,7 +308,11 @@ local function multi_storage_dql(uuid_to_args, func, handler, opts, tier_name) f:discard() end end - return nil, err, err_uuid + local msg = "Unknown error" + if err ~= nil and err.message ~= nil then + msg = err.message + end + error(lerror.make("Error on replicaset " .. err_uuid .. ": " .. msg)) end _G.group_buckets_by_replicasets = function(buckets, tier_name) @@ -317,7 +321,7 @@ _G.group_buckets_by_replicasets = function(buckets, tier_name) for _, bucket_id in pairs(buckets) do local rs, err = router:route(bucket_id) if err ~= nil then - return nil, err + error(err) end local uuid = rs.uuid if map[uuid] then @@ -336,7 +340,7 @@ _G.get_replicasets_from_buckets = function(buckets, tier_name) for _, bucket_id in pairs(buckets) do local rs, err = router:route(bucket_id) if err ~= nil then - return nil, err + error(err) end local uuid = rs.uuid if not map[uuid] then -- GitLab