Skip to content

return_raw=true option doesn't work with is_async=true router.call #592

@d-enk

Description

@d-enk

OK

vshard.router.callro(1, "box.info.memory", {}, {is_async=false, return_raw=true})
- msgpack.object

BUT

vshard.router.callro(1, "box.info.memory", {}, {is_async=true, return_raw=true}):wait_result()
- [{'cache': 0, 'data': 54971, 'index': 1163264, 'tx': 0, 'net': 3588096, 'lua': 11683917}]

This is unexpectedly decoded here

local storage_ok, err
storage_ok, res, err = res[1], res[2], res[3]

This logic needs to be propagate to is_async=true

if do_return_raw and msgpack_is_object(storage_call_status) then
-- Storage.call returns in the first value a flag whether user's
-- function threw an exception or not. Need to extract it.
-- Unfortunately, it forces to repack the rest of values into a
-- new array. But the values themselves are not decoded.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions