Skip to content

Handle nil (msgpack.NULL) result from lua function #69

@anton-putau

Description

@anton-putau

I am trying to get response from lua function and got exception with lua nil value or msgpack.NULL:

// C# code
using TaskModel = global::Tarantool.Client.Model.Tuple<int, string, string>;
using TimeOutModel = global::Tarantool.Client.Model.Tuple<string, int>;

var result = await this.box.Call<TimeOutModel, TaskModel>(TarantoolFunctionNames.TakeQueueItemFunctionName, Tuple.Create(queueName, timeout));

// Lua code
local function take_queue(queueName, timeoutSeconds)
    result = queue.tube[queueName]:take(timeoutSeconds)
    log.info("take from queue %s. result is %s", queueName, result)

    if(result == nil) then
        log.info("return NULL %s",msgpack.NULL)
        return msgpack.NULL
    end

    return result
end

Exception:

System.ArgumentException : Invalid array length: 3 is expected, but got 1. at Tarantool.Client.LogicalConnection.<SendRequestImpl>d__112.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Tarantool.Client.LogicalConnection.<SendRequest>d__72.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Tarantool.Client.Box.<Call>d__82.MoveNext()

Expected behavior: no exceptions, result.Data = empty array || null

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions